It didn't start that away after another error led to another early deficit, with Johnson's inaccurate cross-field bomb eventually seeing Dave Taylor dot down an Adam Reynolds grubber to put Souths in front.
But, instead of wilting like in weeks previous, the Warriors hit back by showing better poise in possession, completing sets and creating try-scoring opportunities.
First, a better bomb from Johnson eventually saw Lewis Brown crash over, before a deft Johnson grubber to the back of the in-goal was grassed by Jerome Ropati - playing at fullback - to put the home side ahead 12-6 in the 13th minute.
Suddenly, it was the Warriors doubling the Rabbitohs' metres gained, and the visitors were the ones tackling themselves to a standstill.
That advantage was further illustrated on the scoreboard in the 22nd minute. Moments after Bill Tupou was denied when Maloney's cut-out pass was ruled forward, a near carbon copy saw Tupou go over in the right corner to give the Warriors a 16-6 lead.
Maloney set up another with five minutes left in the half, firing a flat pass to set Simon Mannering through a hole and over the line to push the score out to 20-6.
But the half ended how it started, with a clever Reynolds kick creating a try - this time to Andrew Everingham - to take some gloss off a good opening 40 from the hosts.
The late try appeared to give South Sydney some momentum, and they started the second spell the brighter side. The gap was reduced to four after 10 minutes when Taylor smashed through three tacklers close to the line for his second try.
But, like the first half, the Warriors hit back almost immediately. Ben Henry gathered another cut-out ball from Maloney before shovelling a fine pass inside for Mannering to grab his double and a 26-16 lead for his side.
Henry then turned from provider to scorer, becoming the beneficiary of a cross-field kick from Johnson to notch the Warriors' sixth try.
Just when the game seemed sealed, Taylor off-loaded in the tackle to give Everingham his second and reduce the deficit to 10 points with 15 left.
But late tries from Ukuma Ta'ai and Krisnan Inu sealed a much-needed win for the Warriors.
Warriors 44 (Brown, Ropati, Tupou, Mannering 2, Henry, Ta'ai, Inu tries; Maloney 6 cons)
South Sydney 22 (Taylor 2, Everingham 2 tries; Reynolds 3 cons)
HT: 20-12