Kylian Mbappe scored a stunning individual goal in stoppage time to give Paris St Germain a 1-0 home victory over Real Madrid and spare Lionel Messi's blushes after he had missed a penalty in their Champions League last-16, first leg on Tuesday.

It took PSG 94 minutes to find the winner with a brilliant run by Mbappe, who danced in between two defenders and calmly slid the ball into the far corner to earn PSG a deserved victory after it had dominated the encounter.

PSG missed several chances and were thwarted by Real keeper Thibaut Courtois, who denied Mbappe on several occasions before superbly pushing away Messi's spot kick in the second half.

"It was a great game for us and I'm always ready to help my team, there are no distractions," Mbappe told reporters.

AS IT HAPPENED | PSG 1-0 Real Madrid Highlights: Mbappe scores in stoppage to win it for Paris St. Germain, Champions League updates

"We have to be humble and the second leg is still open. It will be a hard game but we will have the advantage and are very confident."

Real Madrid finished the game with zero shots on target while PSG had eight, with almost 60% of possession.

Real will be without Casemiro and Ferland Mendy for the second leg at home on March 9. The pair were both shown yellow cards and will be suspended for collecting three yellows in the competition.

"Our counter-attack didn't work today," Courtois told reporters. "It's hard to lose but the second leg is wide open. We have to win and we will try to do it in front of our fans, what is a great advantage."

Courtois repeatedly frustrated Messi and Mbappe. His best save came early in the second half when Messi stepped up for the penalty after Mbappe had been fouled inside the area by Dani Carvajal. The Belgian stretched low to his left to stop the Argentinian's shot with his hand.

But 30 minutes later Mbappe found the winner and Courtois could only watch as the ball went through his legs and into the corner of the net.