Mbappe, restored to the starting line-up at Mauro Icardi's expense, opened the scoring after 52 minutes with a deft backheel and Neymar netted five minutes from the end on a night when both players could have increased their side's advantage.
But PSG's finishing was as inconsistent as its defending and it was only by virtue of a lack of quality in the Nantes attack that Thomas Tuchel's league-leading side emerged with all three points.
Yet with a five-point cushion now and a game in hand on second-placed Marseille, the champion proved yet again that it can win without playing anywhere near its best.
PSG's dominance of Ligue 1 is such that they rarely come out all guns blazing, and the only clear chance of the early exchanges saw Ludovic Blas fire wide for Nantes from just outside the box.
Blas drew a good save from Keylor Navas after 27 minutes, the PSG goalkeeper getting down smartly to turn a low drive around his near post.
Neymar, having spent much of the game protesting against Nantes challenges, steered the ball into the net four minutes from half-time only to see his effort ruled out for a challenge by Julian Draxler on Imran Louza during the build-up.
Neymar missed a one-on-one chance in first-half stoppage-time and the champions piled forward again straight after the interval, Mbappe having a thunderous shot saved moments before he let Angel Di Maria's cross run between his legs and cleverly diverted it past goalkeeper Alban Lafont.
Nantes continued to threaten on the counter-attack and Navas made a strong save from Louza before a moment of madness saw substitute Icardi win a penalty.
Nicolas Pallois' backwards header was bound for Icardi who was pushed from behind by Labont and Neymar buried the ensuing penalty at the second attempt to make sure of the victory.