"I'm happy with the performance of the whole team and the effort from all the players, especially Lionel Messi who helped us win the match," said PSG coach Mauricio Pochettino.
Saint-Etienne took a surprise lead when Denis Bouanga beat the offside trap to fire a shot past Gianluigi Donnarumma on 23 minutes. A flag went up but a VAR review awarded the goal.
The hosts, languishing in the bottom two but on the back of two straight league wins, held their own against PSG, who appeared more affected by the freezing cold and gusting snow.
All that changed with a red card.
There was no VAR to save the hosts on the stroke of half-time when back-tracking defender Timothee Kolodziejczak was sent off for a flailing challenge on Kylian Mbappe.
PSG then levelled when Marquinhos scored with a towering header as Messi floated in the subsequent free-kick, sending in the sides level, but with the hosts hanging their heads.
"At best that was too harsh," said Saint-Etienne coach Claude Puel. "It changed the match, we were leading and doing well."
The second half was one-way traffic with further goals coming from Angel Di Maria on 79 minutes and centre-back Marquinhos with his second in time added on -- Messi again providing inch-perfect passes.
But there was bad news for PSG late on as Neymar fell in full flight after treading on a defender's leg and twisting his ankle in a way that made his teammates wince.
"Right now there's nothing to say. There's pain. He's going to have tests on Monday to find out a bit more about his injury," said Pochettino.
"That's life," Neymar said on Instagram. "I'll be back better and stronger."
The result means Saint-Etienne slip to the foot of the table, behind Metz on goal difference.
Rennes replaced Nice in second as Gaetan Laborde and Jeremy Doku, making his first start since August after injury, struck late away to Lorient.
Marseille are two points behind Rennes with a game in hand after beating Troyes 1-0 at the Velodrome in a match played behind closed doors as punishment for crowd trouble during last month's clash with PSG.
Pol Lirola scored the only goal on 74 minutes after he was put through by Dimitri Payet, the Marseille captain back in the line-up a week after being struck on the head by a bottle thrown from the stands in Lyon.
That match was abandoned with just minutes played and league officials ordered Lyon to play their next home game without supporters.
Lyon edged to a 1-0 win away to Montpellier on Sunday as Lucas Paqueta headed in a rebound in the first half after Islam Slimani's volley came back off the crossbar.
Brest extended their winning run to four games courtesy of two goals from Jeremy Le Douaron in a 2-1 victory at Bordeaux.
Monaco drew for the third match running as Ludovic Ajorque's penalty cancelled out Wissam Ben Yedder's spot-kick in a 1-1 stalemate with Strasbourg.
Clermont slid to a fifth successive loss as Ghislain Konan's stoppage-time goal gave Reims a 1-0 win.