4. Bg2 Nc6 5. d3 Be7 6. e4 O-O 7. Nge2 b6 8. O-O Bb7

White is playing the Botvinnik system now.
9. h3 d6 10. Be3 e5 11. Nd5 Nd4

It appears that Black wants White to capture on d4. After looking at this
position I decided to capture on e7 first because that would lead to the
Black Knight at f6 being pinned to the Queen at e7. It turned out that the
pin was useless.
12. Nxe7+ Qxe7 13. Nxd4 cxd4 14. Bg5 h6 15. Bd2 a5

I am guessing that Black's last move was played to prevent Bb4. I am
still following my original plan of a kingside attack.
16. f4 Rac8 17. fxe5 dxe5 18. Rf5 Nd7

The Black pawn at e5 is adequately protected for now but adding the
Knight to protection frees the Black Queen up to go elsewhere. White now
continues his kingside attack.
19. Qg4 Kh8 20. Raf1 Rc6 21. Qf3 Rf6??

I'm not sure that 21... Nf6 was any better.
This turns out to be the losing move for Black.
22. Rxf6 Nxf6 23. Bxh6 Nxe4

This is the best move for Black here. Black
loses material after 23... gxh6? 24. Qxf6.
24. dxe4 gxh6 25. Qf6+ 1-0

White forces the exchange of queens after which the White Rook attacks
the Black pawns at h6 and b6. Black can defend the pawn at h6 with his King
but then the one at b6 falls and then the pawns at a5 and e5 are weak.