While the Roosters have been clinical all year, their poor kicking and fifth-tackle options prevented them building pressure.
Melbourne drew first blood when Cameron Munster was able to get on the outside of Ferguson and Koroibete burned down the left flank to cross in the corner.
The Roosters took an 8-6 lead into halftime after Sio Taukeiaho powered over the line from a Sam Moa offload caught the Storm defence on the back foot.
The Storm were struck a blow when Koroibete failed to come out of the sheds with a lacerated achilles.
It prompted Bellamy to reshuffle his left side and, in the 54th minute, Kurt Mann, who had just minutes earlier been moved onto the wing to cover Koroibete's loss, crossed in the corner.
The Roosters managed to get back within two courtesy of a sensational 60m try.
Michael Jennings broke the line, stepped multiple defenders down the left, before floating it for rookie halfback Jackson Hastings who chipped perfectly for Shaun Kenny-Dowall to cross.
The Storm were reduced to two men on the bench when McLean went off with a right knee injury but extended their lead when Matt Duffie flew high and batted it back for Tim Glasby for a 20-12 lead with eight minutes left.
Just when it looked like the Roosters were down and out, a short kickoff gifted them field position and Ferguson powered over to cut Melbourne's lead to only two points.
However, the Storm held on for a memorable victory.
- AAP