Trailing 4-3 from the first leg, Real Madrid looked dead and buried when Riyad Mahrez opened the scores for the visitors in the 73rd minute.
By the time the clock ticked 90, Real Madrid had not hit a shot on target but substitute Rodrygo changed the narrative with two quick-fire goals within 91 seconds of each other to force extra time and Karim Benzema completed the damage with a well-taken penalty.
Rodrygo also came off the bench to force extra-time against Chelsea in the previous round, underlying his importance for Real Madrid in this Champions League campaign.
"I'm really happy to be able to score two goals in the semi-final and get Madrid to the place where they always belong – the Champions League final – and to win it," Rodrygo said.
"I couldn't hear what my team-mates were saying to me because I couldn't believe what was happening.
"We were losing the game, my first goal in the 90th minute and we were dead, and then what happened was what happened.
"That's my best version of myself in the Champions League, and I hope I can continue to score a lot more times.
"In this shirt, we learn to always fight until the end and that's the way it was. We conceded a goal and we were almost dead, but with my first goal we started to believe because we've fought back in other games, and then came the second.
"From right now, we turn our attentions to Liverpool. We have another two LaLiga games we can use to prepare for the final."
Los Blancos will now face Liverpool in the final on May 28 in Paris.