In a scrappy encounter lacking the kind of quality or fluidity anticipated between the reigning European champions and the Bundesliga's best, it was Real who took control of the tie.
But Los Blancos had to come from behind to seal their 150th Champions League victory after Joshua Kimmich, steaming forward from right-back, gave Bayern the lead after 28 minutes of a forgettable first half.
Real grabbed an undeserved equaliser a minute before half time when Marcelo rifled a half-volley past the helpless Sven Ulreich from the edge of the Bayern penalty area to send the sides in level at the break.
Twelve minutes into the second half Real completed the turnaround when substitute Marco Asensio clipped home on the counter to give the visitors two priceless away goals ahead of next Tuesday's return leg at the Bernabéu.
This was a long way from vintage Real Madrid but, as the cliché goes, winning when you're not at your best is the sign of a successful team. And as they go for an unprecedented third successive Champions League, Real are certainly that.
But what did we learn from the game? Tom Bodell picks the first leg apart:
For some time the goalkeeping position at Real Madrid has been under scrutiny. Iker Casillas ensured for 16 years that the No.1 position was sewn up. But since the former Spain captain was pushed out the back door to join Porto in 2015 it has been the one area of the Real squad lacking a world-class occupant.
Navas is, by anyone's measure, a good goalkeeper. But he lacks the aura of David de Gea or Gianlugi Donnarumma, both of whom have been Real Madrid transfer targets. A now infamous fax machine prevented Los Blancos from completing the signing of de Gea in 2015 and they have been linked with a return ever since.
Costa Rica international Navas was at fault in the quarter-finals, too, spilling a routine Douglas Costa cross to allow Medhi Benatia's clumsy foul.
Tonight he was caught out horribly by Kimmich's opener and appeared to be anticipating a cross to the far post. Instead the Bayern full-back whipped the ball past him at the near post with Navas diving the wrong way.
Being Real Madrid keeper means long periods of inactivity with concentration levels as important as shot-stopping ability. Manchester United will not be looking forward to the start of the transfer window.
Zidane gets (first half) tactics wrong
Despite becoming the first coach in the modern era to win back-to-back Champions League titles there are still question marks over Zinedine Zidane's coaching credentials. The suggestion, perhaps harshly, is that the Frenchman simply lets his star-studded squad get on with things while offering minimal intervention.
That is a rather reductionist view and the players have been quick to praise the former Galactico for his tactical nous in the past – not least in last season's 4-1 thrashing of Juventus in the final in Cardiff when he was credited with the adjustment which saw them come from behind to triumph.
However, he got his set-up badly wrong in the first half in Munich with Ronaldo completely isolated as a lone frontman. Zidane has deployed his talismanic forward as a striker in a 4-4-2 or 4-3-3 for much of the season but, without warning, switched 4-1-4-1 in Bavaria.
With Real giving the ball away sloppily throughout the first half, completing just 24 of 36 passes in the attacking third, Ronaldo was a peripheral figure. The Portuguese is the man for the big occasion but had just one off-target attempt in the first period and received the ball just 12 times.
Zidane nails substitution to hand Real edge
Evidently unimpressed by what he was seeing in front of him, Zidane sent Asensio out to warm up shortly before half time. The Frenchman's mind was made up and Asensio emerged in the second half in place of Isco.
It took just 12 minutes for the former Internazionale midfielder to vindicate his coach's decision to throw him on.
From a Bayern corner Rafinha carelessly handed possession straight to the visitors. Lucas Vázquez exchanged passes with Asensio who, with the ball running away from goal, deftly dinked the ball past Ulreich to give Real the lead on the night.
Zidane might have got his tactics wrong in the first half, and Ronaldo remained isolated until the introduction of Karim Benzema, but he proved once again he is more than just a motivator.
Franck Ribéry: life in the old dog yet
A feature of Bayern Munich's menacing frontline for the last nine years has been the duel threat of Arjen Robben and Franck Ribéry on the flanks. Now 35 and 34 respectively, the pair are winding down.
But Ribéry emphatically proved there is life in the old dog yet. The former Marseille winger has never done it at an international tournament for France, saving his best performances for Die Roten.
And this was the latest. Ribéry completed 12 of 20 passes in the attacking third, four of seven take ons and even won the ball back for the hosts on seven occasions – only behind Rafinha and Thiago Alcántara.
With Kingsley Coman to come back from injury still and Serge Gnabry set to return to the Allianz Arena following a season-long loan spell at Hoffenheim, Bayern are well stocked in the wide areas for the future. But for the time being Ribéry remains as important as ever.
James Rodríguez back to best for Bayern
It was four short years ago that James Rodríguez announced himself to the world by winning the Golden Boot at the 2014 World Cup in Brazil. Argentine icon Diego Maradona even argued he should have won the Golden Ball, awarded to the best player, ahead of Lionel Messi.
Snapped up by Real for £63million following Colombia's quarter-final exit, Rodríguez scored 13 times in just 29 La Liga starts in his first season at the Bernabéu before falling out of favour in the Spanish capital.
Last summer he followed his former coach at Real, Carlo Ancelotti, in signing for Bayern on a two-year loan deal. His time with Los Blancos was evidently up and Ancelotti implored the Bavarians to bring him to Bavaria.
Even the sacking of Ancelotti in September has not prevent Rodríguez from rediscovering his best form with Die Roten. No player in Europe's top five leagues (Bundesliga, La Liga, Serie A, Ligue 1 and the Premier League) can better his return of 0.99 goals contributed per 90.
As such, Bayern will make his loan move permanent this summer just halfway through the original agreement, paying £36million. And the Colombian showed why he is worth every penny against his parent club, finishing with four chances created, 17 of 21 passes completed in the final third and two of eight crosses.
It's rare a player leaving Real Madrid goes on to success at a similarly-sized club. Rodríguez looks set to be an exception.