Real Madrid produced one of the great Champions League comebacks to defeat Manchester City 3-1 after extra time at the Bernabeu, and go through 6-5 on aggregate.
Even when substitute Rodrygo nipped in front of Ederson to steer home Karim Benzema's pull-back in the last minute to draw level with Riyad Mahrez's City goal, a Real win seemed a tall order.
But two minutes later the Brazilian leapt highest to head home Eder Militao's cross and send the tie into extra time.
Three minutes into this added half-hour, Rodrygo squared for Benzema who was brought down by Ruben Dias and the Frenchman got up to send the City goalkeeper the wrong way from the spot.
The match was uneventful for much of the game with Mahrez's stunning strike, after Bernardo Silva had squared to him on the right edge of the penalty area, seemingly settling the game in City's favour.
Instead it is yet another heartache for City and their manager Pep Guardiola in this tournament and the 13-time champions will face Liverpool in the Champions League final on May 28 in Paris.