The Roosters could have gone a game clear on top of the ladder with a win at GIO Stadium.
Instead, their poor record in the nation's capital continued, where they haven't won since 2010.
The Roosters are locked in a three-way battle at the top of the table for the minor premiership with Melbourne and South Sydney.
The Storm are ahead because of their superior points difference.
Trent Robinson's team had a chance to score in the final minute as they charged in attack, but a knock-on turned the ball over to see the Raiders home and reverse their 2018 fortunes in close games.
Unlike most games featuring the Raiders this season, defence reigned supreme as Ricky Stuart's team held the Roosters scoreless in the first half.
The Raiders led 12-0 at the break thanks to an early try for winger Jordan Rapana before halfback Sam Williams slotted three penalty goals in windy conditions.
But the Roosters were never going to wilt as captain Boyd Cordner found a gap in a sleepy Raiders defence just a few minutes into the second half.
Roosters lock Victor Radley levelled the scores with a diving try in the 60th minute, but the Raiders weren't done as Williams put his team back in front with another penalty goal.
That's where the score would stay as the Raiders secured their ninth win of the season and maintained their position in 10th on the ladder.
The Raiders had to deal with Luke Bateman and Brad Abbey going off for head injury assessments, forcing five-eighth Blake Austin to move to fullback.