Having suffered consecutive 1-0 defeats - which came amid several positive coronavirus tests in the squad - PSG looked set to be frustrated again in their pursuit of a first goal and first win after three league matches in 2020-21.
Abdou Diallo was sent off and Juan Bernat departed injured, leaving nine PSG players battling to preserve a point until Julian Draxler profited on a goalkeeping error at the other end to head in.
PSG players collapsed in a heap at the end as the Champions League finalists moved out of the bottom three and eased the pressure on coach Thomas Tuchel less than a month on from the Lisbon loss to Bayern Munich.
Draxler's goal came after great work from Di Maria, who had been PSG's one bright spark right from the outset.
The Argentina international went close with a pair of early efforts and then twice crossed for Mauro Icardi to head over and twice set Pablo Sarabia clear, only for Alexandre Oukidja to block on each occasion.
Meanwhile, the hosts survived a scare when Keylor Navas rushed to the rescue as Farid Boulaya - apparently just onside - failed to add the finishing touch to a frantic counter-attack.
PSG's attacking impetus waned after the interval and the hapless Diallo made their task harder still as his stray arm caught Ibrahima Niane for a second booking.
A remarkable Oukidja save with his legs denied Icardi when he looked destined to net the winner, then the goalkeeper's left boot repelled Di Maria.
Bernat hobbled off in the closing stages to leave PSG two men down and Metz's Youssef Maziz came agonisingly close to a decisive stoppage-time strike as he swept wide.
That goal would instead belong to Draxler as Di Maria kept the ball in play on the left flank and sent in a teasing centre that Oukidja awkwardly parried up for the waiting German winger to steal the points.
What does it mean? Relief as PSG finally win
Neymar might have been one of three PSG players sent off against Marseille, robbing the team of some star quality in the coming weeks, but this no longer looked like a threadbare XI.
Tuchel had Navas, Marquinhos and Icardi back for this match and they dominated 72 per cent of the possession, yet PSG's finishing was woeful until Draxler could not miss.
A draw would not have been well received, even with selection issues, while a third straight defeat to start the season - very much on the table in the closing stages - would have been an unwanted first in the club's history.
Di Maria delightful
One man who could have shouldered little blame had this ended in a stalemate was Di Maria, whose five key passes should have yielded at least a couple of assists.
Now fully recovered from COVID-19, the former Real Madrid midfielder weighed in with five shots, too, but it was a slightly wayward cross that ultimately proved the difference.
Diallo was preferred to Presnel Kimpembe to partner returning captain Marquinhos in the centre of defence, but the former Borussia Dortmund man endured an incredibly tough outing.
4 - Paris have had four red cards in their last two Ligue 1 games, as many as in their previous 62. Nervous. pic.twitter.com/GTgLwCMlTE— OptaJean (@OptaJean) September 16, 2020
Booked after just 56 seconds for tugging back Niane, Diallo might have been off by the seventh minute had he not ducked out of a challenge on the same man. The centre-back won just 25 per cent of his first-half duels and was finally dismissed with 25 minutes remaining, again tangling with Niane for PSG's fourth red card in two matches.
PSG have little time to reflect on a much-needed triumph as they head to Nice on Sunday. Metz host fellow strugglers Reims later the same day.