Wow, good job persevering to the end. Horrible play from Black though to facilitate this. Pushing all those pawns into the game just gives away more and more advantage, and any promotion that doesn't check just makes a stalemate more and more likely once the rook was brought in. But even before that, just from the response to move 46 and onward it seems like mistake and blunder after mistake and blunder to me. I think Qf3 was a major misstep here, triggering a long list of missteps with unnecessary king and pawn moves, giving up the knight, and then pushing an unnecessary promotion, then failing to follow the rule of being up that much material and always checking to avoid stalemate...black instead almost seems to want to avoid making checks! Without engine checking, I come up with this logic:
46 . . . Qd3 looks crushing. If 47. Kb4, then . . . Na6+, the king is reduced to 2 squares to move, with pawns to support what looks like an easy mating web (though I won't try to calculate that out, as pawn mates can get tricky).
If instead 47. Kb2, then . . . Qb3 which I believe is mate if 48. Kc1 . . . Nd3#, so 48. Ka1 is the only option, which could result in a stalemate if white doesn't move the queen again; but with proper play, after a sidestep from the Queen to say d2 the position is lost. White's king will be stuck in the back line and the rook can come in after a few moves to end it (though there may be some easy knight play for it as well, I didn't calculate these lines).
Moral of the story. When you are ahead by so much material, don't seek to draw a game out and punish your opponent, take some time to find a quick solution rather than pushing pawns, giving your opponent cover from your heavy hitters.
Oh, little mistake, I said "any promotion that doesn't check just makes a stalemate more and more likely once the rook was brought in" but it appears actually after looking again the rook was the stalemate move, which is even worse actually since 2 queens should have easily finished off white's king without needing to touch the rook at all there. Regardless, just wanted to clarify that nonsensical statement as I thought the rook had been moved before the promotion for some reason.