Kylian Mbappe opened the scoring in the 38th minute after he was brought down by Nice youngster Khephren Thuram-Ulien. The Frenchman then buried his penalty with ease, leaving Nice goalkeeper Walter Benitez no chance.
Youcef Atal was sent twisting and turning by Mbappe yet again 6 minutes later, with the Frenchman also adding centre-back Andy Pelmard to his list of victims. Mbappe's fierce shot was spilled by Benitez, allowing Angel di Maria to pounce and make it 2-0 going into the break.
The Argentinian came to the fore in the second half as well, with his wicked in-swinging free-kick from the right glanced home by Marquinhos in the 66th minute to end the game as a contest.
Here's how each player fared for Paris Saint-Germain.
Paris Saint-Germain Player Ratings
Keylor Navas - 8/10
The Paris Saint-Germain goalkeeper was definitely not the busier of the two keepers but made great saves from Morgan Schneiderlin and Rony Lopez' shots in the first half.
Despite Paris Saint-Germain's dominance resulting in the game being over as a contest fairly early, Navas stayed alert - denying Youcef Atal, Evann Guessand and Amine Gouiri with excellent saves in the second half.
Mitchel Bakker - 6/10
Paris Saint-Germain's only left-back at the moment struggled defensively, with Rony Lopez getting the better of him multiple times. Dan Ndoye also had the beating of the full-back, with Mitchel Bakker earning a yellow card for his troubles late on. However, he was great going forward, with plenty of first-time passes causing problems.
Presnel Kimpembe - 7/10
Presnel Kimpembe could have scored from a corner but was quite busy at the other end covering for Bakker's mistakes. He distributed the ball quite well, rarely giving it away and ensuring Paris Saint-Germain's defensive shape was well kept at all times.
Marquinhos - 7/10
The Brazilian had an uneventful first half, making interceptions and directing his defensive partners when needed. A lovely glancing headed goal in the 66th minute from Angel di Maria's set-piece was pivotal in ending the game as a contest.
Alessandro Florenzi - 5/10
The Italian struggled at the start of the game, with Kamara and Lotombo beating him for pace a few times. He rarely got forward apart from a couple of occasions and even when he did, the final ball was lacking.
Julian Draxler - 6/10
The German was mostly anonymous, even after switching wings with Angel di Maria in the first half for a short time. He retained possession well enough but rarely contributed to the team going forward, apart from an assist when he was offside.
Marco Verratti - 7/10
The Italian was his usual self, snapping into tackles and generally being a pest for the opposition midfielders. Thankfully, there were no yellow or red cards as the Italian quelled the rage within him for the entirety of the game.
Idrissa Gana Gueye - 7/10
The Senegalese midfielder was only on the pitch for 23 minutes but managed to shine in that short period, with a through ball that ought to have been an assist for Kylian Mbappe while also preventing plenty of counter-attacks. Paris Saint-Germain boss Thomas Tuchel will hope that the ankle injury that forced him off is a minor one.
Angel di Maria - 8/10
After plenty of wicked deliveries from set-pieces that ought to have resulted in assists, Angel di Maria finally got his reward after pouncing on the rebound from Mbappe's strike to score the second goal for Paris Saint-Germain.
The Argentinian could have easily had 3 assists in the game but had to make do with one after Marquinhos made his superb set-piece delivery count.
Mauro Icardi - 6/10
Mauro Icardi occupied the central areas of Nice's defence with some excellent runs and clever layoffs but rarely presented much danger. He ought to have scored on the hour mark after Di Maria had found him in space in the box, only for Benitez to charge down his shot as he took his time.
Kylian Mbappe - 9/10
After a rusty 30 minutes where he missed a few chances he normally buries, Kylian Mbappe came to life in the 37th minute. He tormented Atal down Nice's left wing multiple times, with both first-half goals coming from his excellent runs.
The French striker was in such fine form that after an hour of twisting and turning, Atal had to come off with a pulled hamstring.
Overall, an excellent return for Kylian Mbappe.
Paris Saint-Germain substitutes
Ander Herrera - 6/10
The Spaniard slotted into Gana's role with ease but was perhaps not as defensively sound, with Nice's midfielders finding pockets of space to fire long range efforts. He nearly gifted a penalty to Nice late on but VAR came to his rescue and ruled it as a free kick.
Bandiougou Fadiga - 6/10
Fadiga replaced Angel di Maria in the 79th minute and showed some good touches and passes in the few minutes he was afforded.
Pablo Sarabia - 5/10
With the game mostly won by the time he came on for Kylian Mbappe in the 79th minute, Sarabia had little to do. He missed a chance to score a late goal with a bad piece of control but it would not have changed the course of the game.
Colin Dagba - N/A
The Frenchman came on for Presnel Kimpembe in the 84th minute and barely had the time to make an impression.