Record winners Real Madrid fought back at the death en route to an extraordinary 3-1 extra time win over Manchester City on Wednesday for a place in the Champions League final - where like in in their last decider 2018 Liverpool will be the opponents.
Having won the first leg 4-3 at home last week, City thought they had clinched the semi-final tie when Riyad Mahrez fired them 1-0 up in the 73rd minute.
But substitute Rodrygo smashed a 90th minute equalizer, forced extra time with a stoppage-time header, and Karim Benzema converted a 95th-minute penalty in a sensational turnaround at the packed Bernabeu for Carlo Ancelotti's freshly crowned Spanish champions.
The game did not quite have the flair of the breathtaking first seven-goal meeting at the Etihad but the late drama for Real's 6-5 aggregate win more than made up for it as the night turned out to be as "magical" as called for by the fans in a huge pre-game banner.
While Pep Guardiola's City failed again to win the elite event for a first time, Real, who had ousted Paris Saint-Germain and title holders Chelsea in the previous rounds, will now be going for a record extending 14th title on May 28 in Paris.
Liverpool had won the other English-Spanish semi the previous day 3-2 at Villarreal for an aggregate 5-2 success.
The two sides met in the 1981 decider with Liverpool winning 1-0 and Jürgen Klopp's men will be aiming to avenge their 3-1 defeat from the 2018 final as they seek a seventh trophy in the elite event and are still on course towards four season titles overall.
"It is amazing. It is difficult for me to explain what happened in the end. It is the belief that also helped us against PSG and Chelsea. As the coach likes to say, it is magical," Real midfielder Toni Kroos told streaming portal DAZN.
Looking ahead, he added: "We have been in a few finals over the years and we will play the final to win it."
City had the best chance of a mainly cagey first half when Bernardo Silva's drive towards the near corner was palmed away by goalkeeper Thibaut Courtois.
The hosts should have taken the lead seconds after the restart when Vinicius Junior fired wide at the far post off Dani Carvajal's cross.
City broke the deadlock when Silva found Mahrez with a low pass to smash high into the near right corner with 17 minutes left.
That appeared to settle the tie, and substitute Jack Grealish almost got a second when his shot was cleared on the goal-line by Ferland Mendy.
But the real drama was yet to come as Rodrygo tapped the equalizer in the 90th at the near post, and then headed Real ahead into the top left corner off Carvajal's cross.
The third came five minutes into extra-time when Ruben Dias came too late against Benzema who raised his season tally to a tournament record-equalling 15 from the spot - not a Panenka-style chip into the centre like in the first leg but firmly into the bottom right corner.
City still had 25 minutes to respond and they came very close in the 105th when Courtois just got his hands on Phil Foden's header and the sliding in Fernandinho could then not quite convert at the far post, and Real held on to another famous win.
"It is the history of this club that helps us to keep going when it seems that we are gone," Ancelotti told BT Sport.