Kylian Mbappé broke the deadlock shortly after halftime and Neymar sealed the win with a penalty late on.
The home side struggled to break through the Nantes defense but eventually did so seven minutes after the break when Mbappé slotted home an assist from Angel Di Maria from close range.
Nantes went close to the equalizer but gifted PSG its second five minutes from time when goalkeeper Alban Lafont fouled Mauro Icardi and Neymar converted the resulting penalty.
Saint-Etienne stayed within touching distance of a Champions League berth with a 4-1 win over Nice.
The match was all but over at halftime. Denis Bouanga converted a penalty and, although Kasper Dolberg leveled, goals from Romain Hamouma and Wesley Fofana gave the home side a comprehensive lead.
Bouanga headed in his second in the 58th minute.
Saint-Etienne moved up to fifth, a point behind third-place Bordeaux and the final Champions League qualifying berth.
Montpellier slipped to sixth after being held to a 2-2 draw at struggling Dijon.
Dijon moved one point above Metz, which fell into the relegation zone after a 1-0 loss to Rennes.
Elsewhere, Monaco won 2-1 at bottom club Toulouse, while Amiens’ match against Reims was postponed because of bad weather.