12...e5 looks weak. Maybe 12...Be4
Instead of 13...Nxa5, perhaps 13...axb5 14.Nxb5 Ne7.
After 14.bxa6, Black should try 14...b6 and not expose his King.
Better for White than 18.Bh4 is 18.dxe5 and if 18...fxe5 19.Bxe5 since 20.Qxe5?? loses to 21.Qxb7 mate.
Stronger than 19.Bxf6 is 19.Nxh6 Nxh6 20.Bxf6 and 21.Bxe5.
20.Nxh6 is OK, or 20.dxe5 Qxe5 21.Nxh6.
Instead of 22.Kd1, better is 22.Qd2! since 22...Qxa6 loses to 23.Nc2 and 24.Ra8+, 25.Rxh8.
Better than 24.Nd6+ is 24.Nf7 and if 24...Rxf7, then 25.Nd6+ and 26.Nxf7.
25.Rxa5 looks wrong. Best is 25.Ndf7.
25...Qxa5 is correct. 25...Qd3+? 26.Ke1 Kxb6 27.Qb4 should win for White.
You are lucky. It looks like you should have lost this game after 26.Qxb2 (perhaps best at this point is 26.Ndf7, but Black wins after 26...Rb8). 26...Kd8 leads to mate, but 26...Kxd6, followed by 27...Ne4 wins for Black.
All of you might not think this is so spectacular; and frankly, the first bits of it weren't great. But once, around the move 20, I had a moment of brilliance; "in the zone" one might say. And I had never felt that before, which lasted for a few hours. I cooked up a scheme for a few games, but the next day after having woken up, I forgot it all. I took a look into the analysis board (a GREAT feature I may add, that I should use more often) and "aha!", in this particular game, spent 20 mins trying to find the move I had already planned out. So there. Now to you puzzle-doers (or better chess players) this final bit likely looks quite easy - but I am TERRIBLE with puzzles and such, so I was rather pleased when I rediscovered my checkmate.
Though, at around 15, I had a lesser moment, but still alright.