Click here for PGN version with full annotation (some symbols appear as $x except in Fritz) and variations.
Click here for a Java-viewer version with most of the annotation.

Position after 22...Rd8

This is the position entering the endgame. The possibility of black incursion into either of the squares marked in red pretty much forces the exchanges that follow.

Position after 26...Nd5

This is how the knights leave the board. The black knight has executed a "second order fork", threatening to fork at b4 if white chooses to defend f4 with the knight.

Position after 31.g3

Black has the opposition, and a lot more waiting moves than white. The kingside pawns are likely to get all locked up, and black's pawn advantage on the opposite wing will decide the game.

Position after 39...g6

Opposition again. Black could afford to play into this position because of the extra waiting move 39...g6 leaving white with serious zugzwang; if not for that, a little bit of triangulation and extra patience would have been necessary.