Marco Asensio was Real Madrid's semi-final super-sub in the Champions League as he secured two away goals in a 2-1 win at Bayern Munich on Wednesday.
A scrappy encounter saw all three goals stem from poor pieces of defending, although Bayern lost Arjen Robben and Jerome Boateng to injury in the first half and arguably had the better of the chances, as clinical as Marcelo and Asensio were.
BBC looked to be no more as Karim Benzema and Gareth Bale were benched for Isco and Lucas Vazquez, while Bayern were without key men David Alaba and Arturo Vidal at left-back and in midfield respectively. However, James Rodriguez faced his parent club for the first time, having left Los Blancos for the Germans on a two-year loan last summer.
The two sides would meet for a record 25th time in Europe, with Madrid controversially overcoming Bayern in the quarter-finals last season, although they had no such problems four years ago, when they beat Pep Guardiola's then-outfit 5-0 on aggregate in the last four.
The referee was Dutchman Bjorn Kuipers, who officiated Los Merengues' 4-1 victory over Atletico Madrid after extra-time in the 2014 Final.
Arjen Robben took just six minutes to break down, although that didn’t stop James from threading through Joshua Kimmich, who came across from the right, before firing a finish past Keylor.
Boateng was the next Bayern player to bow out in the first half after he went down unopposed on the run, yet his centre-back partner Mats Hummels almost hooked in Robert Lewandowski's knock-down from close range.
The hosts appeared to have done enough for a half-time lead, but they failed to deal with looping header, which fell to Marcelo. The Brazilian suddenly cracked home a half-volley into Sven Ulreich's bottom-right corner.
Keylor then made up for taking a chance with Kimmich’s opener by keeping out Lewandowski's towering header from a free kick just before the break.
Madrid replaced Isco with Asensio during the interval, and the winger’s introduction proved to be a masterstroke by Zinedine Zidane.
Indeed, Rafinha’s awful square ball in his own half was intercepted by Lucas Vazquez, whose defence-splitting pass to Asensio was blasted into the back of Ulreich’s net by the substitute.
Franck Ribery, for his part, was Bayern’s biggest threat, constantly beating Dani Carvajal down the left, but Keylor was on hand to push away two point-blank finishes from the Frenchman.
Lewandowski had a night to forget, accidentally getting in the way of Muller in Madrid’s six-yard box, with Keylor beaten, before chipping a one-on-one with the Costa Rican wide.
Similarly quiet in Munich was Cristiano Ronaldo, and despite the Portuguese volleying home a sensational volley after he took down a long ball from the right, it didn’t count as he controlled the ball with his arm.
Bayern Munich 1-2 Real Madrid
Kimmich 28 (BM) Marcelo 44, Asensio 57 (RM)
Bayern Munich: Ulreich; Kimmich, Boateng (Sule 34), Hummels, Rafinha; Javi Martinez (Tolisso 75); Robben (Thiago 8), Muller, James; Ribery; Lewandowski
Real Madrid: Keylor; Carvajal (Benzema 67), Varane, Ramos, Marcelo; Modric, Casemiro, Kroos; Vazquez, Ronaldo, Isco (Asensio 46)
Referee: Kuipers (NED)