Kingsley Coman scored the only goal of the game as Bayern Munich beat Paris Saint-Germain 1-0 in the first leg of their Champions League last-16 tie on Tuesday, with Kylian Mbappe denied a late equaliser by VAR.
Mbappe was the victim of a marginal offside call after he came on as a substitute on his return from injury.
The unmarked Coman swept in an Alphonso Davies cross eight minutes into the second half at the Parc des Princes, just as Mbappe was preparing to enter the fray after PSG had appeared devoid of ideas without their top scorer.
Mbappe, and the entire stadium, thought he had equalised with eight minutes remaining when he turned in a Nuno Mendes cutback, but the goal was ruled out because the Portuguese full-back was just ahead of the last defender at the start of the move.
Bayern ended the game with 10 men after Benjamin Pavard was sent off, but it was a frustrating ending for PSG, who looked much better in the latter stages with Mbappe on the field but also needed a couple of fine saves by Gianluigi Donnarumma to prevent a bigger deficit.
PSG must now hope they can turn the tie around in the second leg in Munich on March 8.
Coman, who started his career in Paris, did not celebrate his goal but it was a case of history repeating itself — he had been the matchwinner when Bayern beat the Qatar-owned club in the 2020 final in Lisbon to become European champions for the sixth time.
The fitness of Mbappe had dominated the build-up to the game, with the France superstar initially ruled out because of a thigh injury before making a faster-than-expected return to training over the weekend and being named in the squad.
He was named among the substitutes, while Warren Zaire-Emery, at 16 years and 343 days old, became the youngest player ever to start a Champions League knockout game.
But Bayern had little to be afraid of in the first half as Mbappe –- scorer of seven goals in six games in the group stage –- watched on, with Lionel Messi and Neymar badly missing his presence.
Messi, Neymar struggle to make impact
Instead Bayern, playing with a three-man central defence, controlled the game and restricted PSG to just one attempt on goal in the first half.
Yet the Bundesliga leaders, who are still without Sadio Mane as he recovers from injury, did little to trouble Donnarumma apart from a Joshua Kimmich shot that was easily saved.
Bayern coach Julian Nagelsmann took off Joao Cancelo at half-time and replaced him with Canadian international Davies, a change that saw Coman move from the left flank to the right.
PSG also made a change, surprisingly replacing Achraf Hakimi with France centre-back Presnel Kimpembe, but the biggest cheer of the night had been reserved for Mbappe when he came out to warm up during the break.
The 24-year-old was preparing to come on when Bayern opened the scoring as Davies crossed from the left to the far post where the unmarked Coman applied a first-time finish.
Mbappe promptly replaced Carlos Soler but the French champions needed Donnarumma to keep them in the game, and perhaps the tie, as he produced a fingertip save to touch an Eric Maxim Choupo-Moting effort from a Jamal Musiala cutback onto the woodwork.
From the corner that followed, Donnarumma made another fine save from Pavard’s header.
PSG needed to find a way to get the ball to Mbappe and they eventually did so in the 73rd minute, a Fabian Ruiz ball over the top sending the forward bounding towards goal.
Bayern goalkeeper Yann Sommer rushed out to block Mbappe’s shot with his face before Neymar was denied from the follow-up.
Then Mbappe did put the ball in the net, only for the celebrations to be cut short, and Bayern held on even after Pavard was shown a second yellow for scything down Messi.