I actually did consider this move, unlike so many others he has surprised me with, but I thought I could deal with it in a couple of ways. Now it's looking way more complicated than I thought. And seeing so many posts about it makes me think the game might be back in the balance (or maybe it always was?)
First, I need to look at two forcing tactical lines: Qe3+ and Rg2+, which might lead to straightforward ways to escape with a big advantage. If those are unpromising or unclear, I will move on to Qg6/Qh6.
A. 28...Qe3+ 29. Qxe3 Nxe3 (29...Rg2+ 30. Kf4! Nxe3 31. fxg7+ Kxg7 32. hxg4! and I think Black has to accept the perpetual check on g5 and h5) 30. Rh5+ (I think fxg7 also works, idea is Rg5+ then Kh4) 30. Rh5+ Kg8 31. Rxd2 and now:
A1. 31...Nf1+ was my original plan here 32. Kh4! g6 (32...Nxd2 fxg7=, this is why the K has to be on h4 to avoid f5+ and also gxh5+) 33. Rf2 gxh5 34. Rxf1 and White is maybe even winning
A2. 31...g6 Re2 and again White has done enough to get an endgame that is at least equal
B. 28...Rg2+ 29. Kxg2 (29. Qxg2 Qxf5) Qxf5 30. Qxf5 (forced I'm sure) Ne3+ 31. Kf2 Nxf5 32. hxg4
This is the kind of material-up endgame I was worried about. Sample line: 32...Nh6 (Nh4 is better I think, but still maybe hairy) 33. Kf3 Rc8 34. Rd7 Rxc3 35. g5 Nf5 36. Rxf7 and I don't know who is better here. So I'll come back to this, probably to the Nh4 variation, if Qh6 or Qg6 really aren't good.
C. 28...Qh6 29. Rh1 (29. Qxg4 Rxd1) looks scary.
D. 28...Qg6 and both Rxd1 and gxh3 are major threats. He has a lot of possibilities:
D1. 29. Rh1 gxh3+ 30. Kh4 (Kf4 Rf2+ or Kf3 Qg2+) and now 30...Rfd8 or 30...Rg2 looks crushing
D2. 29. Rxd2 Nxd2 and now:
D2a. 30. fxg7+ Kxg7 31. Qf4 gxh3+ is a nice little trick: Rg5 is met by Ne4+. And if 31. Qxg4 Qxg4+ 32. Kxg4 Rc8 (or anywhere) should be easy
D2b. 30. Qxg4 Qxg4+ 31. Kxg4 (or hx) g6
D2c. 30. Qf4 gxh3+ 31. Kh4 Kg8! intending Qh6+. e.g. 32. fxg7 Rc8, or 32. Rg5 Qh6+ 33. Kg4 g6 34. Qxd2 h2 -+
D3. 29. fxg7+ Kxg7 and he doesn't seem to have gained any possibilities that don't transpose to D1 or D2. e.g. 30. Rdf1 gxh3+, or 30. Qf4 gxh3+ 31. Rg5 Rg2+
D4. 29. Qf4 for completeness (though he'll probably find a 5th move as usual, perhaps he will ignore all my threats and play something like e6 when Rxd1 or gxh3 is surely totally winning) gxh3+ just like D3
In summary, Qg6 looks good and probably simplest