Real Madrid certainly wobbled here but, having fallen repeatedly this season in domestic competition, they ultimately again stood tall on their favourite Champions League stage.
A sub-plot of Cristiano Ronaldo 2, Neymar 0 was also another blow for the old guard against the challenge of Paris St-Germain and was effectively the difference in a wider 3-1 scoreline.
It is only half-time in the tie though and, while Madrid's late flurry has given them a potentially crucial advantage ahead of the second leg in Paris, there was enough here from Paris St-Germain to suggest that an upset remains possible. They had earlier taken the lead and, while Neymar was fortunate to stay on the pitch following a second-half dive, they really should have left Madrid with more than a solitary away goal.
There was one significant surprise in Zinedine Zidane's selection, with Gareth Bale, despite being fully fit and expected to start, left on the bench in preference for Isco up alongside Karin Benzema and Ronaldo in a three-man attack.
Isco's industry off the ball was outstanding and PSG's suspect defence were forced to soak up an intense early attempt by Real to establish their seniority on the game. Isco was not just setting the tempo but he also created the first chance for Ronaldo, who pulled his shot across the goal.
Toni Kroos also soon forced a save from PSG goalkeeper Alphone Areola with a shot from the edge of the penalty area. Neymar initially appeared isolated but a wonderful pass from Marco Verratti provided a first opportunity for him to run into space and, while he wasted the chance, Madrid's vulnerability on the counter-attack was clear.
PSG's threat was coming from across their front-line and they took the lead when Real goalkeeper Keylor Navas failed to collect Kylian Mbappe's cross under pressure from Neymar and the ball fell for Adrien Rabiot (right) to calmly finish. Cavani then soon had the chance of PSG's second away goal, but Casemiro scrambled back to help his defenders and make a crucial block.
The flurry of PSG pressure seemed also to provoke more urgency in Madrid and they did then respond impressively.
From a corner, Kroos drew a challenge from Giovani Lo Celso that prompted no hesitation in referee Gianluca Rocchi's award of a penalty.
Ronaldo stepped up and, while Areola did dive the right way, the sheer force of his shot ensured a 20th goal in his past 12 Champions League matches.
There was a huge moment of controversy in the second half. Neymar was sprinting clear but went down theatrically when it appeared that he could not reach the ball. Referee Rocchi quickly signalled that there had been no foul and appeared to be striding purposefully towards Neymar with an intent to brandish a yellow card.
Yet he then seemed to realise that Neymar had already been booked and, amid the prospect of not just ending the Brazilian's night but also ensuring that he would be suspended for the second leg, decided against any further action.
Chances continued to be created by both teams when the game resumed. Gareth Bale, who had replaced Benzema, sprinted in behind the PSG defence but, as he checked back to find support, Presnel Kimpembe recovered with a potentially goal-saving block. PSG, though, seemed suddenly weary, perhaps as a result of how they had been forced to defend during the first half, and Madrid struck twice in the space of four minutes.
Marco Asensio had also been introduced and he then provided two match-winning crosses. The first cannoned up off Areola for Ronaldo to score his second and then Marcelo broke in from the opposite flank to give Madrid their two-goal cushion.
R Madrid3 PSG1