The Ligue 1 leaders took a 25th-minute lead through their big-money summer signing, who was starring up front on his own in the absence of the suspended Zlatan Ibrahimovic, but Les Verts substitute Mevlut Erdinc's strike after 78 minutes sent the match into extra-time.
With penalties looming, however, Cavani popped up two minutes from time to put PSG through to the next stage and cruelly ensure underdogs St Etienne's efforts were in vain.
Lyon progressed through to the last eight courtesy of a 3-2 win over Reims, with all five goals coming in a breathless second half.
Bafetimbi Gomis opened the scoring just before the hour mark and Alexandre Lacazette doubled Lyon's lead almost immediately after, with Yoann Gourcuff restoring their two-goal advantage in the 81st minute after Prince Oniangue had halved the deficit and meant that Floyd Ayite's penalty three minutes from time was in vain.
Brazilian forward Jussie came off the bench to fire Bordeaux into the next round as his last-gasp penalty sealed a 2-1 win at Rennes.
Jussie's compatriot Henrique broke the deadlock five minutes after half-time and although the hosts levelled through Abdoulaye Doucoure, it was Les Girondins who had the last laugh.
Marseille, who won the competition for three straight years from 2010, squeaked past Toulouse 2-1.
Jose Anigo's men were two goals to the good before the half-hour mark thanks to Benjamin Mendy and Andre Pierre Gignac's penalty and, although Uros Spajic halved the deficit three minutes before half-time, Toulouse could find no way through in the second half.
Nemanja Pejcinovic, Romain Genevois, Jeremy Pied all netted in the first 34 minutes as Nice breezed to a 3-0 victory over Ligue 1's bottom side Sochaux, while Daniel Wass bagged a second-half brace as Evian came from behind to earn a 2-1 win over Bastia, who had taken the lead just after the half hour mark through Ilan.
Troyes are the only side left in the competition not in the top flight after beating fellow Ligue 2 side Tours 3-2.
Visitors Tours took an early lead through Bryan Bergougnoux, which was immediately cancelled out by Yohan Court, who then added a second midway through the half and although Youssef Adnane levelled on the stroke of half-time, Benjamin Nivet popped up in the last minute to seal Troyes' progress.