The Warriors have got out of jail.

In a dramatic finish, a 79th minute Shaun Johnson penalty saw them edge the Roosters 14-13 in an incredible finish.

Until that moment it looked like the Warriors were heading for their third successive defeat, as the Roosters completely dominated the final quarter and led 13-12 with two minutes to play.

But the referees found an offside penalty against the Roosters backs, and Johnson held his nerve to slot an angled kick from 20m.

Advertisement

It was a welcome win, but they were fortunate. Just like in the previous fortnight, the Warriors were almost the architects of their own downfall.

They led 12-4 at halftime but couldn't put the foot on the throat.

Instead a series of errors let the Roosters back into the match, and the Sydney side looked the much more likely winner in latter stages of the second half

They were camped inside the Warriors half, and only some gritty defence stopped the Sydney side from converting a number of opportunities.

It was truly sweet and sour from the Warriors. There were moments of real inspiration, followed by some head scratching plays and baffling mistakes. Their attack lacked the fluency of recent weeks, mainly because the Roosters effectively crowded them out. In the great traditions of the Bondi club, starting when Ricky Stuart was the coach, the Roosters defenders spent most of the match in the Warriors backline, completely disregarding the offside rule, but they were eventually punished with the crucial late call.

Captain Tuivasa-Sheck was brilliant against his old club, coming up with one of the stops of the season early in the second half to deny what looked like a certain Roosters try.

The Sydney side were erratic in first half - with a number of handling errors - but as they tightened up in the second they began to dominate. Their intimidating pack edged the Warriors forwards, laying a great platform.

Just like they have done for most of the season, the Warriors opened the scoring. They made an energetic start and after Kieran Foran split the defence close to the line, James Gavet powered over on the next play. After being picked up on a match payments deal before the start of last season, Gavet has been the Warriors best prop in 2017 and must be close to securing a new contract for next season and beyond.

The Roosters responded through Joseph Manu, who barged over Ryan Hoffman and Blake Ayshford near the right touchline. The opportunity came after a misdirected Johnson pass, which was scooped up by Shaun Kenny-Dowall deep inside the Roosters half.

The recently re-signed halfback made amends later, in one of the flashpoints of the second half. Johnson stripped the ball from Daniel Tupou on a kick return, and an indigent Tupou was sent to the sin bin after a professional foul. When the Roosters down to 12 men, a short ball from Johnson sent Fusitua over soon afterwards.

The second half was a grim struggle. The Warriors eschewed two great chances early in the first half - one from another misdirected Johnson pass and the other from a Fusitua brain fade, as he attempted to pass off the ground while tackled, rugby style.

The Roosters grabbed their reprieve, with Kenny-Dowall intercepting a Johnson pass before a Michael Gordon penalty levelled the scores.

It was virtually one way traffic after that. Tuivasa-Sheck's tackle was one of several desperate attempts, and Hoffman showed great urgency to block two Mitchell Pearce drop goal attempts. But when the Origin halfback nailed the third in the 74th minute it looked like there was only going to be one winner from there, before the dramatic late penalty.

Warriors 14 (J Gavet, D Fusitua tries; S Johnson 3 goals)
Roosters 13 (J Manu, S Kenny-Dowall tries; M Gordon 2 goals, M Pearce drop goal)
Halftime: 12-4‚Äč