A few months ago Akismet, the de facto anti-spam plugin for WordPress showed a message that my blog has grown too big for it to do its job free of cost. I looked and tried several popular free Akismet alternatives and finally settled on Antispam Bee. I have been using it for a couple of months now and it does a nice job.
Here are my settings:
While there are still about 2 or 3 spam comments that slip through (i.e., not marked as spam automatically and kept in the comment queue) every day, overall it does a fine job.