Goals in either half from Mauro Icardi and Thilo Kehrer were just about enough for Thomas Tuchel’s side to stretch their lead over second-placed Marseille ahead of their trip to Saint-Etienne on Wednesday.
PSG extended their unbeaten run in all competitions to 20 matches despite a Presnel Kimpembe howler allowing Moses Simon to race through and pull one back in the 68th minute, setting up a nervy finish.
“I’m thrilled with how we played for 70 minutes, I’m very satisfied,” said Tuchel to Canal+.
“We should have scored four times but only scored twice, and then that error … I think it was a bit too much confidence.”
The capital club were dominant for long periods despite the absence of Neymar with a rib complaint, and it was Kylian Mbappe, starting following his touchline spat with Tuchel at the weekend, who created the opener.
World Cup winner Mbappe burst down the left flank before pulling back perfectly for Angel Di Maria, whose shot brushed fellow Argentine Icardi before nestling in the back of the net.
The three points looked to be sealed 11 minutes after the break when Kehrer headed home Di Maria’s corner.
However, Kimpembe let Nantes back into the game 11 minutes later when his fluffed attempt at a flicked pass to centre-back partner Kehrer gave Simon his chance.
PSG had a series of good opportunities to go back two goals ahead, with Mbappe twice denied by fine last-ditch defending, but they failed to capitalise and had to thank Keylor Navas for twice saving the result in the final minutes.
First, he got out well to stop Simon as the Nigerian bore down on goal and in stoppage time got down brilliantly to push away Renaud Emond’s close-range flick.
Earlier, Rennes missed the chance to go second after Loic Remy’s early goal consigned them to a 1-0 defeat at Champions League-chasing Lille.
Remy struck in the fourth minute for the hosts when he collected Jonathan Ikone’s pass before lashing home a long-range effort to move his fourth-placed side up to 37 points, three behind Rennes.
The away side remain a further three points away from Marseille, who would have been temporarily overtaken by Rennes had they won by two goals or more.
Monaco meanwhile won their first league match of 2020 1-0 over Angers thanks to Stevan Jovetic, who guided in Youssouf Fofana’s long pass with his head to move Robert Moreno’s side ninth, level on 32 points with four other teams.
The victory ends a four-match winless run in the league for Monaco that was made worse by last week’s French Cup exit at the hands of Saint-Etienne last week.