54. h6!! Interestingly, the winning line is too long for computer to appreciate why it wins, so some engines recommend Bf6 instead as the best try Kxd4 55. h7 b3 56. h8=Q b2 57. Kf8+ Kd3 58. Qh7+ Kc4 59. Qf7+ Kd3 60. Qf5+ Ke3 61. g4 b1=Q 62. Qxb1 Nxb1 63. g5
My opponent also did not calculate far enough (that line was only 13 moves deep), and in the original position he played 54. Bf6? After 54… Ne4! 55. h6 (55. Bb2 Nxg3 56. h6 Nf5+ 57. Kg6 Nxh6 was probably what he missed.) 55... Nxf6 56. Kxf6 b3 57. h7 b2 58. h8=Q b1=Q
This is a draw according to tablebases, but of course with about 10-20 SD minutes remaining for each side, it would not be so easy to play this correctly for either side. In the end I managed to salvage a draw in this tiring queen endgame.