I flag the spam so that the spammer can be registered, warned and banned if required.
Then, I remove any link that would allow the spammer to get a visit and add something like "see history for more details". I'd also remove any brand name or coordinate if included, for instance:
The original version is still in the history and the spammer is defeated.
I think this is a good way too.
Edit:
@Federico kindly initiated a discussion on Meta.SE:
That clarified what is the current process to remove spam, and provided opinions too, e.g.:
[F]uture viewers of the post may not understand that it is spam and therefore not add their spam flags to it (moderator).
The system doesn't take revisions into consideration for this - flags are raised against the post, not its revisions (moderator).
A spam post with the links removed is as disruptive as one with them – it may be even worse since it takes me longer to identify it as spam. Replacing the entire post by some notice like “spam removed” does not help either, as it takes me as long to read that notice as to identify most spam (and of course as somebody with flagging capabilities, I have to load the revision history)
From this I understand it not a problem to remove links while indicating the links were spam links so that other users can continue to flag and the flags reach the critical number for deletion.
I also understand that it adds some work to the person manually deleting spams, a point I had not initially seen. I don't want that. So in the end, I think the best action is to not edit.