The Uruguay forward turned in Lucas Moura's cross to put the visitors ahead at the break.
Thomas Meunier headed against the Nantes bar before Cavani sealed the win with a thumping 25-yard free kick.
PSG, bidding for a fifth straight title, have won their past four games by scoring 15 goals and conceding none.
Unai Emery's third-placed side have 45 points from 21 games - one behind Nice, who drew 1-1 at Bastia on Friday.
Second-placed Monaco, above PSG on goal difference, will go top if they avoid defeat when they host second-bottom Lorient on Sunday.
Elsewhere on Saturday, Guingamp stayed in fifth after drawing 1-1 at home against 10-man Rennes.
Bordeaux moved above opponents Toulouse into eighth place with a 1-0 home success, while Metz boosted their survival hopes with a 2-0 home win against Montpellier.
Mid-table sides Dijon and Lille remain 15th and 14th respectively following their goalless stalemate.
Match ends, Nantes 0, Paris Saint Germain 2.
Second Half ends, Nantes 0, Paris Saint Germain 2.
Foul by Maxwell (Paris Saint Germain).
Adrien Thomasson (Nantes) wins a free kick in the defensive half.
Attempt blocked. Ángel Di María (Paris Saint Germain) right footed shot from the centre of the box is blocked. Assisted by Hatem Ben Arfa.
Offside, Paris Saint Germain. Thiago Motta tries a through ball, but Hatem Ben Arfa is caught offside.
Attempt blocked. Thomas Meunier (Paris Saint Germain) right footed shot from the centre of the box is blocked. Assisted by Hatem Ben Arfa.
Attempt saved. Ángel Di María (Paris Saint Germain) header from the centre of the box is saved in the centre of the goal.
Attempt blocked. Adrien Rabiot (Paris Saint Germain) left footed shot from outside the box is blocked. Assisted by Hatem Ben Arfa.
Attempt missed. Valentin Rongier (Nantes) right footed shot from outside the box misses to the left.
Attempt saved. Adrien Rabiot (Paris Saint Germain) right footed shot from the centre of the box is saved in the centre of the goal. Assisted by Ángel Di María.
Foul by Ángel Di María (Paris Saint Germain).
Adrien Thomasson (Nantes) wins a free kick on the left wing.
Corner,  Paris Saint Germain. Conceded by Lucas Lima.
Substitution, Paris Saint Germain. Hatem Ben Arfa replaces Edinson Cavani.
Attempt blocked. Ángel Di María (Paris Saint Germain) left footed shot from the left side of the box is blocked. Assisted by Edinson Cavani.
Corner,  Paris Saint Germain. Conceded by Maxime Dupé.
Corner,  Paris Saint Germain. Conceded by Lucas Lima.
Edinson Cavani (Paris Saint Germain) wins a free kick in the defensive half.
Foul by Koffi Djidji (Nantes).
Corner,  Nantes. Conceded by Thiago Silva.
Substitution, Paris Saint Germain. Adrien Rabiot replaces Marco Verratti.
Substitution, Nantes. Adrien Thomasson replaces Amine Harit.
Attempt missed. Emiliano Sala (Nantes) right footed shot from outside the box is too high. Assisted by Amine Harit.
Attempt saved. Ángel Di María (Paris Saint Germain) left footed shot from outside the box is saved in the centre of the goal.
Felipe Pardo (Nantes) is shown the yellow card for a bad foul.
Lucas Moura (Paris Saint Germain) wins a free kick on the left wing.
Foul by Felipe Pardo (Nantes).
Delay over. They are ready to continue.
Substitution, Paris Saint Germain. Ángel Di María replaces Julian Draxler because of an injury.
Delay in match Julian Draxler (Paris Saint Germain) because of an injury.
Corner,  Nantes. Conceded by Maxwell.
Substitution, Nantes. Mariusz Stepinski replaces Yacine Bammou.
Goal!  Nantes 0, Paris Saint Germain 2. Edinson Cavani (Paris Saint Germain) from a free kick with a right footed shot to the top left corner.
Diego Carlos (Nantes) is shown the yellow card.
Julian Draxler (Paris Saint Germain) wins a free kick in the attacking half.
Foul by Diego Carlos (Nantes).
Thomas Meunier (Paris Saint Germain) hits the bar with a header from the left side of the box. Assisted by Lucas Moura with a cross following a set piece situation.
Blaise Matuidi (Paris Saint Germain) wins a free kick on the left wing.
Foul by Koffi Djidji (Nantes).
French champions Paris St-Germain moved within a point of Ligue 1 leaders Nice as striker Edinson Cavani's brace earned a 2-0 win at Nantes.