Real Madrid produced an astonishing late fightback to snatch a place in the Champions League final at the expense of Manchester City on Wednesday.
Substitute Rodrygo scored twice in the closing minutes of a tense semi-final second leg at the Bernabeu Stadium before Karim Benzema settled a tie that will live long in the memory with an extra-time penalty to make it 6-5 on aggregate.
Riyad Mahrez had put City on course for a final date with rivals Liverpool in Paris later this month when he broke the deadlock in the 73rd minute, putting the English side 5-3 ahead on aggregate.
Yet, just as they had failed to press home their advantage in last week’s classic first encounter at the Etihad Stadium, Pep Guardiola’s side again failed to keep tight at the back, losing 3-1 on the night.
Real, after staging rousing comebacks against Paris St Germain and Chelsea in the previous two rounds, battled back to level the tie with their first two on-target efforts.
With City reeling, they were caught out again as Ruben Dias was adjudged to have felled Benzema and the prolific Frenchman finished from the spot.
City managed to regroup but Thibaut Courtois produced a fine save to deny Phil Foden and Fernandinho put the rebound agonisingly wide.
The result was another shattering Champions League blow for Guardiola and prolongs City’s long wait for European glory.
They were not at their best in a ferocious Bernabeu atmosphere but looked to have done enough to see through the job.
They were boosted by the return of fit-again Kyle Walker and the right-back did a fine job in restricting the dangerous Vinicius Junior.
Yet Real needed to force the pace and they went close after just four minutes when Benzema headed over from a Dani Carvajal cross.
The tension was evident and tempers soon flared with Aymeric Laporte and Luka Modric both booked after clashing during a stoppage in play.
Benzema and Vinicius then both blasted over as Real threatened again.
City grew into the game and created some openings themselves with Kevin De Bruyne testing Courtois from distance. Silva went even closer when he raced onto a clever De Bruyne pass but Courtois again saved, as he did from Foden soon after before Gabriel Jesus shot over.
City had a let-off in the opening seconds of the second period as Carvajal whipped a low ball across goal but Vinicius fired wide at the far post.
There was a further moment of alarm when Vinicius weaved his way into the area but Modric’s shot was blocked and City scrambled clear.
Walker’s battle with Vinicius finally took its toll as he was forced off midway through the second half and Guardiola also replaced De Bruyne with Ilkay Gundogan.
City looked to have weathered the storm and they took what appeared a firm grip on the tie as Mahrez broke the deadlock.
The goal came after the outstanding Silva tore through the Real rearguard with a charging run. He found Mahrez just inside the area and the Algerian expertly and clinically curled a shot into the top corner.
City were in sight of a second final appearance in two years but, just as in the first leg, they allowed Real back into the game.
As they have shown throughout the competition, the Spaniards never know when they are beaten and they set up a frantic finish when Rodrygo turned in a Benzema flick at close range.
The Bernabeu was now rocking and more drama followed as Rodrygo remarkably levelled the tie by heading home from a Marco Asensio cross in injury time.
City were shellshocked as the game went into extra time and they were stunned again as Dias brought Benzema down and the Frenchman stepped up to score from the spot.
City almost responded as Courtois brilliantly kept out Foden’s header. The ball fell to Fernandinho but he missed the target and Real went on to see out the second period of extra time.