0208 GMT February 28, 2020
Cavani opened the scoring with a penalty only for Mathieu Valbuena to equalize, but the Uruguayan headed in the winner nine minutes from time for his 18th goal of the season in all competitions, AFP reported.
Nice, which was held to a 1-1 draw at home by Bastia earlier in the day, finishes the weekend where it started it, on top of the table, but it is now only a single point better off than inform Monaco and Paris.
"We knew it wasn't going to be easy here but we ended up winning. I think our experience made the difference," PSG midfielder Blaise Matuidi told Canal Plus.
PSG had Serge Aurier back in the side after he missed the midweek Champions League trip to Arsenal as British authorities barred the Ivorian international from entering the United Kingdom due to a recent conviction for assaulting a police officer.
It went in front at the Parc OL on the half-hour mark as Cavani netted from the penalty spot after Rafael was penalized for kicking Thiago Motta in the area.
Lyon was poor in the first half but coach Bruno Genesio sent on Valbuena and Nabil Fekir at the restart and was rewarded with an equalizer in the 48th minute.
Rafael cut in from the right and curled a shot off the far post, but the ball fell to France midfielder Valbuena, who converted for his first Ligue 1 goal in more than a year.
However, Paris showed great resolve to go on and win the game, substitute Thomas Meunier breaking forward down the right with Aurier and crossing for Cavani to head in at the back post.
The Uruguayan now has 13 league goals this season and 99 goals in total for the club he joined from Napoli in 2013.
An improving PSG is unbeaten in its last 11 games in all competitions and is turning up the pressure on Nice, as is Monaco, which beat Marseille 4-0 on Saturday.
Nice was again missing Mario Balotelli against Bastia due to a calf injury but it went in front at the Allianz Riviera when top scorer Alassane Plea headed in his eighth of the season early on.
However, struggling Bastia — which had not won any of its previous six league outings — equalized on the hour as Enzo Crivelli followed up to score after goalkeeper Yoan Cardinale had come out and saved from Yannick Cahuzac.
Nice still could have taken all three points but Malang Sarr headed against the post from a Jean Michael Seri free-kick and Plea rounded goalkeeper Jean-Louis Leca only to hit the bar with his shot three minutes from the end.
"We didn't get the breaks that have helped us before when we have not played so well," admitted Nice coach Lucien Favre.
"We scored quite early on and then, maybe subconsciously, we started to relax.
"All our matches against teams towards the bottom of the table have been difficult."
Saint-Etienne won 2-1 at Angers earlier in the day to go eighth.
There is more action in France in midweek, with Monaco at Dijon today before Nice visits Guingamp and PSG entertains Angers on Wednesday evening.