An interesting finish to the game, with what I think is a rather pretty sacrifice. I made the mistake of running this game through Fritz and it just laughed at me :(
15... Ra8b8 16. Nf3g5
No specific idea behind this move. I use the principle of "Pile up the pieces in front of the enemy King and wait for something to turn up!"
16... Ba4d7 17. Be2h5 Nb6a4
Fritz tells me about all sorts of amazing attacks I could have done here. The problem is I don't understand a single move it is telling me. Damn these supersmart computers!
18. Rf1f3 b5 19. Qg3h4 h6 20. Rf3g3
Here I could have won a pawn by playing Nxe6. This exposes an attack on the undefended Knight at e7. However, afterwards my Queen is driven out and the attack has stopped. I'm a pawn up, but no more attack and not easy to see how to carry on. So, I followed the advice of Boris Spassky - "Don't punish your opponent's first mistake". His reasoning is that if your opponent is making small mistakes, then he isn't in tune with what is happening and will make a bigger mistake if you give him time. Of course Fritz afterwards told me that both me and my opponent had been making mistakes on just about every move. Damn these computers!
20... Qa5b6
I don't have a clue what that move was about. And it doesn't defend against the mate threat that Rg3 introduced.
21. Ng5h7
A sacrifice on an empty square is always pleasing.
21... Kg8xh7
Black's best option might have been Rf7, but after Nf6+ everything falls apart. However this leads to mate.
22. Rg3xg7
I suspect Black didn't see this follow-up. But even Qxe7 is crushing as it threatens mate, plus attacks the undefended bishop. However, this wins immediately.