Real Madrid will go for their 15th European title against Borussia Dortmund at Wembley at the start of June after a stunning late turnaround saw them ditch Bayern Munich out with just six minutes to spare.
Joselu, rejected by Real as a youth and forced into a peripatetic career that included stints at Stoke City and Hoffenheim, was the unlikely star with the 35-year-old coming from the bench in the 81st minute and scoring twice.
That was the heart, but the head was all Vinicius Junior: the Brazilian superstar was unstoppable in the second half and both goals came from his station on the high left hand side.
“There have been a lot of times we have looked dead and buried, but we have that mentality of never say die,” said Jude Bellingham.
“Joselu deserves it all, he has been an amazing squad member this season.
“There is a reason we turn around so many games, it’s because of these lot [the fans]. They give you an energy you can’t get from anything else.”
Thomas Tuchel had pulled up the drawbridge just moments earlier and was brutally punished.
Having snatched a lead thanks to Alphonso Davies’ sucker punch midway through the second half, he withdrew Harry Kane and Jamal Musiala in the 85th minute and attempted to see the result out. It didn’t work.
“It’s one of the best games of football you’ll ever see, in terms of the level between the two teams and the margins of error,” said Craig Foster on Stan Sport. “They’re so tiny.”
For a game with so much tension, it was perhaps understandable that the first half took a while to get going.
Manuel Neuer saved twice, from Vini and Rodrygo, with Kane firing the only shot in anger at the other end.
From the moment the second half started, however, VIni looked in a mood. He hit the byline within a minute of the resumption and nearly missed Fede Valverde in the middle, then did it again moments later and, after that, a third time. Bellingham was, on this occasion, the one unable to capitalise.
Watch every match of the UEFA Champions League exclusive & ad-free, live & on demand on Stan Sport.
Bayern were showing threat, too. Kane latched onto a long ball, bodied Ferland Mendy off the ball and fired at the near post. Lunin saved.
Real redoubled efforts. VIni took on Mathijs De Ligt and found Rodrygo, but his shot squirmed wide.
Having seen his teammates fail, the winger took it on himself with a dribble and shot, but Neuer tipped over.
For all that Vini Jnr had twisted Kimmich’s blood at one end, it would be a reverse angle that opened the scoring.
Kane was the architect, springing Davies with a trademark long pass, but from then on it was all about the Canadian international, who drove straight at Antonio Rudiger, turned him both ways, then smashed an unsavable shot into the top corner.
It was a breathtaking goal in a game that, since the break, had been breathless.
Suddenly it was all on. Real had the ball in the net moments later from a simple corner move, but Nacho had pushed De Ligt before the ball came in and, after much protestation, the VAR found it.
Still Real continued.
Rudiger picked out Vini at the back post, but he couldn’t control his shot.
The plan was working however, and eventually paid off: Vini stood up Kimmich, shot and for the first time, Neuer wasn’t up to it. He spilled his shot at the feet of Joselu, who couldn’t believe his luck.
It kept coming. Rudiger was freed on the left and centred for Joselu, who again was in the right place at the right time.
The flag was immediately raised but, on review, the newly-introduced Kim Min-Jae had played the centre back onside and the goal stood.
Bayern then had to go for it, but lacked their key players after Tuchel’s fateful subs. Even 15 minutes of added time could not save them.