Andrew Webster's men recovered from a 10-point first-half deficit to snap an alarming three-game losing streak after the Dragons lost three forwards before the break in freakish scenes at Go Media Stadium.
The Dragons had to activate 18th man Tyrell Sloan after back-rowers Hamish Stewart and Jack De Belin fell victim to some friendly fire, both ruled out with category-one concussions after clashing heads trying to bring down Warriors enforcer James Fisher-Harris.
Then interchange forward Hame Sele also failed a HIA following a 29th-minute head knock.
Despite the setbacks, the Dragons enjoyed a 10-0 lead following an early try-scoring double from powerhouse centre Mathew Feagai.
A four-pointer six minutes before the break to Chanel Harris-Tavita, after a skilful sideline offload from Roger Tuivasa-Sheck, put the Warriors back in the contest.
St George Illawarra overcame their reduced one-forward rotation to hold the Warriors at bay for much of the second half before the home team finally drew level at 10-10 with a 62nd-minute try to centre Adam Pompey.
Pompey's second soon after, when the Dragons' short-side defence fell for a clever dummy-half dummy from Taine Tuaupiki, gave the Warriors the lead for the first time with six minutes remaining.
"Far from perfect. That's pretty clear," said coach Webster.
"But an amazing amount of effort and scramble and working hard for each other and finding a way.
"When you're not playing the best football, I don't think your first win (after a losing streak) is going to be a 20-point victory. It's going to be a win.
"That's what we come up with tonight."Friday night's victory vaulted the Warriors above Penrith into fourth spot on the ladder after the New Zealanders' season threatened to unravel.
The injury-hit Warriors could have slumped to as low as seventh by the end of the round. Instead, they extinguished the Dragons' slim finals hopes.
St George Illawarra, though, were still claiming a moral victory.
"We spoke at halftime about it could be one of the greatest wins if we can steal it," skipper Damien Cook said.
"But even not getting the result is still a massive win for us as a club and the team.
"Just the resilience and character that we showed for each other, it's a massive, massive step in a good direction for us.
"We still had a great result. We lost some players early but we rallied together and, while we didn't get the result tonight, we're not going to let the result take away from a massive achievement that we had."
Coming off back-to-back wins over finals-bound Cronulla and Canberra, the Dragons had the chance to steal the match at the death and claim another major scalp but weren't able to cash in on a Sloan line break.