James Tedesco and Luke Keary starred with two try assists apiece as the Roosters held off a fast-finishing Canberra Raiders 22-18 at GIO Stadium.
The loss was doubly painful for Jarrod Croker, the Raiders co-captain replaced in the dying stages because of injury in addition to being denied a fairytale finish to his 250th NRL game.
In a contest of momentum swings where either team couldn't land a knockout blow, Daniel Tupou's second for the day opened up a crucial 10-point lead for the away side in front of 19,530 fans at GIO Stadium.
The high-quality game showed the Roosters are still very much a team to be feared this season with the finals looming on the horizon.
For the Raiders, while they threatened the defending premiers for extended periods of the game, the loss means the Green Machine have yet to beat a fellow top four side.
The Roosters opened the home side on their left edge, with Tedesco turning Croker inside out before scything through and finding lock Victor Radley backing up on the inside to make it 6-0.
Match: Raiders v Roosters
Round 21 -
Venue: GIO Stadium
- LIVE PASS
Off the back of a penalty, the Raiders slowly broke down the Roosters line before John Bateman found Jordan Rapana with a perfect off-load to even the scores after 11 minutes.
Canberra edged ahead after desperate attempts to off-load the ball on the Sydney line eventually ended up in the hands of Croker who scooted over to score in his milestone match.
The Raiders co-captain made no mistake with the conversion to stun the away side at 12-6 after 13 minutes.
Nick Cotric went close to scoring in his return from suspension, with the centre crawling over the line from close only to be denied due to a double movement.
The momentum swung back to the Tricolours when a knock-on by Charnze Nicoll-Klokstad from a bomb saw the ball scooped up by Latrell Mitchell who reached out and slammed the ball down.
Mitchell added the extras to make the score 12-all after 25 minutes.
Elliott Whitehead was placed on report for dropping his knees into Joseph Manu when he collected a grubber kick as Canberra turned the screws slowly on the away side.
However, the Raiders were under the pump when Jordan Rapana was ruled to have lost the ball under heavy pressure from a group of Roosters defending after cleaning up a bomb.
The visitors were unable to make the most of the chance with possession coughed up cheaply under big pressure from the Raiders' defence.
Manu was taken from the field in the 31st minute for a head injury assessment as both sides probed for any slight advantage in the tense arm-wrestle.
Sydney re-took the lead soon after a well-weighted kick found a high-flying Tupou to make the score 18-12 in the shadows of half-time.
Off the back of a penalty the Raiders went close to scoring down their left edge, with a Croker off-load finding Bailey Simonsson but the winger put a foot into touch.
From nowhere, the Roosters extended their lead with a sensational pass from Tedesco found Tupou for his second to see the away side secure a vital 10-point lead.
Sydney continued to apply the blowtorch to the home side but mistakes at crucial times stopped them from potentially extend the lead into a match-winning one despite 20 minutes remaining.
Josh Hodgson's impact on the game in attack was felt all game and he produced again for Canberra right when they needed it.
A clever grubber from the Raiders hooker caught the Roosters defence napping, with Whitehead grounding the ball to make it 22-18 with 15 minutes left.
Off-loads and penalties to the Raiders saw them grab back the momentum as Joe Tapine went close to scoring, only to be slow to his feet after copping plenty of attention from the Roosters defence.
Canberra continued to throw numbers to their left with Jack Wighton ruled to have knocked the ball on close to the line with less than 10 minutes to go.
The Raiders lost one of their skippers after Croker was bundled over the touch line in a desperate bid to score, ending his milestone game early as time ran out and the Roosters showed again why they are one of the teams to beat in 2019.