sacs weren't very sound but they worked.
Blitz win

19. Qb7+ wins only an exchange, leading to rook against 2 knights ending.
I know that sacs were unsond, but that's blitz anyway.

19. Qb7+ wins only an exchange, leading to rook against 2 knights ending.
How does black save his knight while capturing white's?
Either way, I would rather win an exchange than sacrifice an exchange. Your sac wasn't really forcing.

19. Qb7+ Nbd7 20. Nc6+ Ke8 21. Nxd8 Rxd8, only exchange is won.
And 21. Nxe6 was threatening both Nc7# and Nxg7+ then Nxh5, by the way.

19. Qb7+ Nbd7 20. Nc6+ Ke8 21. Nxd8 Rxd8, only exchange is won.
And 21. Nxe6 was threatening both Nc7# and Nxg7+ then Nxh5, by the way.
Yep, you're right. My bad.
EDIT: 20. Nxe6!! fxe6 21. Rxe6+ Kf7 Qe7+ wins the exchange with a much better position. My computer confirms you win the queen for a rook later in the line.

Yeah, I see now that immediate 20. Nxe6 was better. It doesn't only win an exchange, by the way, the knight on f6 is also doomed, so it wins a whole rook.

Yeah, I see now that immediate 20. Nxe6 was better. It doesn't only win an exchange, by the way, the knight on f6 is also doomed, so it wins a whole rook.
Yes, but I think it is better to trade a rook for the queen later in the line than capture the knight.
To be honest, I don't know the exact line here, but it is clearly winning, regardless.
I again tried sacrificing the white-squared Bishop on b5, and this time, it was more successful.