Queen sacrifice for a nice attack!!!
That was definitely an unsound sacrifice, and you were lucky that he got flustered by the sacrifice and blundered on move 27. Then again, there was no way that you could have saved the game, against sensible play, at move 25.
27.Bd5 would have retained a large advantage.
Even better, though, was the simple 27.Rxc6. After 27...Rxd4 would come 28.Bxe6+, followed by either a quick checkmate or even more material losses.