The Warriors did all the attacking in the opening 15 minutes, but failed to open the scoring after a couple of tries went begging. First, Hurrell was brilliantly held up by Roosters fullback Anthony Minichiello in the right corner, then Bill Tupou couldn't reel in James Maloney's pass on the same sideline.
The home side continued to pile on the pressure but the Roosters soon found the perfect way to alleviate it.
Alehana Mara, starting in place of the injured Nathan Friend, looked to have grounded a grubber in the in-goal but video referee Bernard Sutton ruled Roosters centre BJ Leilua had simultaneous contact and awarded the try.
And the Roosters soon made it 8-0 after Warriors fullback Jerome Ropati made a mess of a last-tackle grubber, allowing Aidan Guerra to easily slip through an outnumbered Warriors defence on the left.
While the early season incarnation of these Warriors may have fallen further behind, tonight they hit back almost immediately. Maloney threw a nice pass to release Hurrell near halfway on the right wing, and the 20-year-old ran around Minichiello like he was standing still to dot down in the corner.
Once the video ref denied the Roosters a third try, the Warriors hit the lead. Simon Mannering gathered a cut-out pass from Johnson and slipped the straightening Hurrell through a gap for his double to make it 12-8.
But the Warriors also suffered a blow in the build-up to the try, when Ropati was forced from the field favouring his knee following a heavy tackle.
The Warriors, who took a 12-10 lead to the break, put Maloney back to fullback to start the second spell, and the Roosters soon exploited the change in personnel. Leilua released Tautau Moga on the left touchline and the wing broke the covering Maloney's tackle to put Sydney back in front.
But that lead didn't last for long, thanks to a piece of magic from Johnson. Nothing appeared on when the halfback gathered a loose ball in the Roosters' red zone, but Johnson danced across the Sydney defensive line before slipping between Guerra and Mose Masoe to go under the posts.
That made it 18-14 but, again, the lead quickly changed hands. A Roosters penalty provided advantageous field position, and Jared Waerea-Hargreaves capitalised by bulldozing his way over following a Jake Friend short ball.
The Roosters threatened to increase their advantage but, with 17 minutes remaining, Johnson showed an unexpected aspect of his game to regain momentum. Maloney's crossfield kick was a difficult one for the Roosters to defend and Johnson, somehow, out jumped Kiwis teammate Shaun Kenny-Dowall to gather and force the ball.
And the Warriors appeared to clinch the game two minutes later, when another kick from Maloney found a more conventional target. Vatuvei rose high above Sam Perrett to take the ball cleanly, spun in the tackle and reached out to score the Warriors' fifth.
Minichiello forced his way over with four minutes left to bring his side within four points, and went agonisingly close to stealing a late victory, but the Warriors held on.
Warriors 30 (Hurrell 2, Johnson 2, Vatuvei tries; Maloney 5 cons)
Roosters 26 (Leilua, Guerra, Moga, Waerea-Hargreaves, Minichiello tries; Anasta pen, 2 cons)
HT: 12-10