Manchester City suffered one of the most remarkable Champions League collapses as Real Madrid came back from the abyss to set up a final showdown with Liverpool.
City were two goals ahead on aggregate going into the 90th minute after Riyad Mahrez's strike had added to their 4-3 first-leg win last week.
And then Rodrygo happened.
The Brazilian substitute turned home Karim Benzema's left-wing ball from close range in the final minute - with Real's very first shot on target.
And 90 seconds later he levelled the tie with a header into the top corner after Marco Asensio flicked on Dani Carvajal's cross.
That sent an already rowdy Bernabeu into absolute euphoria.
City, who thought they were going through to a second consecutive all-English Champions League final, were shell-shocked.
Both sides had chances to win the tie before the full-time whistle. Ederson denied Rodrygo a quick-fire hat-trick and then an unmarked Phil Foden fired over inside the box.
And so to extra time the game went - and it was Real who got the decisive goal in maybe the greatest Champions League semi-final ever.
Benzema beat Ruben Dias to a loose ball in the box and was brought down by the City defender. He stepped up to take the penalty himself and scored his 43rd goal of the season. There is no doubt it is the most important.
Real's Thibaut Courtois, who was by far the busier keeper, tipped away Foden's header with Fernandinho inches away from scoring the rebound - but City could not find a goal to send it to penalties.
That sets up a repeat of the most memorable Champions League final of recent years, when Real beat Liverpool 3-1 in 2018.
For City and manager Pep Guardiola now, the Premier League title - they sit one point above Liverpool with four games to go - is their only target.
“Another magical night from the kings of Europe,” trumpeted the pre-match tifo, above an image of Benzema mocked up as an emperor. It is all a part of the show, all a part of what City had to tame.
It was edgy, the passions simmering. When Casemiro set down an early marker with a scissors-style tackle on Kevin De Bruyne, it led to a confrontation between players from both teams, some push and shove between Luka Modric and Aymeric Laporte, the latter riskily putting his hand in the Real midfielder’s face. Both were booked. Casemiro surprisingly was not and he got away with another one in the 33rd minute when he dragged down Foden.
City were determined to take the sting out of the occasion, to stroke the ball about, but the home crowd were in no mood to ease up on the whistling. They were deeply unimpressed at how Ederson seemed to take longer than usual over his goal-kicks. Or whenever a City player went down.
It was a tremendous atmosphere and the decibel level would have risen if Benzema had done better with an early header, when he was free. However the flag did go up for offside. The striker also lifted high after a Federico Valverde cut-back. Vinícius Júnior was similarly wasteful with a first-half sighting. And that was about it for Real before the interval, City holding firm at the back, limiting them to scraps.
Vinícius offered himself on the left, although this time City had Kyle Walker, back from injury, to counter him. Nobody beats Walker in a foot race. Vinícius wanted a foul for a nudge by Walker as they chased a ball over the top but it was wishful thinking. There was also a perfectly timed slide tackle by the full-back on Vinícius inside the area on 40 minutes.
It was the visitors who had the clearer first-half chances. De Bruyne released Bernardo Silva with a lovely pass and he went for the near top corner – with power – to draw a smart save out of Courtois. De Bruyne also teed up Gabriel Jesus, who swiped narrowly wide, while there was a sweet hit on the volley by Foden from 25 yards that worked Courtois. There would be frustration when Riyad Mahrez overhit a pass for the breaking De Bruyne in the 45th minute.
Carlo Ancelotti, fresh from completing his European grand slam of league titles, having secured La Liga at the weekend, started Modric in the No 10 role, giving him plenty of scope to roam. The manager offered him the platform. How he craved a moment from Modric.
The tension crackled, the crowd surged whenever Real did. Vinícius fluffed an opportunity at the far post straight after the second-half restart, although again the flag went up, and Modric did not summon the power in a shot after good work by Vinícius. Benzema also narrowly failed to play in Vinícius.