Rhinos seemed to be heading for defeat, but turned the game on its head with three tries in the final 15 minutes.
Leeds opened the scoring, but Catalans targeted their right-side to clinical effect and went 16-6 ahead before a try on the stroke of half-time got the visitors back in the game.
Catalans scored again to make it 22-12 on 52 minutes and it stayed that was until 15 minutes left, but back-to-back tries edged Leeds ahead and though Catalans levelled briefly, skipper Danny McGuire’s late try sealed a precious win.
Leeds were without England duo Ryan Hall and Kallum Watkins and Mitch Garbutt who was on paternity leave.
Ashton Golding - in place of Jack Walker at full-back - and Liam Sutcliffe, playing in the centres, returned from injury and Mikolaj Oledzki and Jordan Lilley were called up on the bench, though the latter did not get on.
Dragons lost star man Greg Bird in the opening minutes and Brayden Wiliame and Louis Anderson also picked up knocks.
Sutcliffe celebrated his 100th Leeds appearance by scoring the opening try after just three minutes, from McGuire’s kick.
He also added the extras, but lead lead was short-lived, Anderson powering past Ashton Golding and Matt Parcell from Lucas Albert’s pass. Tony Gigot converted after video referee Robert Hicks confirmed the try, deciding there was no obstruction in the build-up.
Golding went close for Rhinos and Leeds turned down a simple two points when they tapped a penalty in front of the post, but Moon’s pass - aimed at Ash Handley - went into touch.
The visitors had an escape on 19 minutes when Gigot stepped through the Leeds defence, but referee Jack Smith spotted a possible obstruction by Anderson on Jamie Jones-Buchanan and Hicks said no try.
Then Gigot lost the ball near his own line and McGuire picked up with nobody ahead of him, but Fouad Yaha ran him down and the ball came loose in the tackle.
Catalans hit the front on 24 minutes through Julian Bousquet, who crossed from an assist by Albert.
Again Smith asked for a second opinion, but this time he thought the try was valid - though he couldn’t check for a and Hicks agreed. Gigot’s conversion made it 12-6.
Six minutes before the break Leeds conceded again, to Wiliame who went over from Bousquet’s pass after good work by Sam Moa and Paul Aiton.
There was no conversion and Leeds forced their way back into the game on the final play of the half.
A penalty with seconds left was kicked into touch close to Catalans’ line and Stevie Ward twisted over past three defenders, with Sutcliffe’s goal making it 16-12 at the break.
Two minutes into the second half Gigot seemed to have got the ball down, but the near-side touch judge stood his ground and video ref Hicks spotted the full-back had been held up by his opposite number Golding, with Ward’s help.
At the other end Hicks ruled Handley to be offside from a kick by Jones-Buchanan, but with 15 minutes left McGuire sent Cuthbertson storming over and in the next set Burrow crossed after neat play by Jones-Buchanan, Moon and Handley.
Sutcliffe converted both, the second off the touchline, to edge Leeds ahead with 11 minutes left, but Gigot levelled with a penalty.
Leeds would probably have settled for a draw, but a burst by Cuthbertson gave them an opportunity and they took it when McGuire ghosted through and Sutcliffe added the extras to complete the scoring.
Golding had a strong game for Leeds and Ward, Jones-Buchanan and Cuthbertson also impressed, with McGuire being outstanding in the second half.