Melbourne will host a home preliminary final at AAMI Park after a gutsy 20-18 win over the Roosters.
In 20,521 fans at Allianz Stadium in Sydney, Storm held on during a pulsating second half of football.
Melbourne opened the scoring through flying winger Marika Koroibete who silenced the crowd in the 10th minute of play.
A successful conversion by Cameron Smith kicked Storm out to a six-point advantage as they pressed for more points shortly after.
Handling errors and and a steadfast Roosters defence held out the visitors before Sydney propelled forward to level the contest.
The tight nature of the first half continued for the remainder of the opening 40 minutes with both sides trading attacking incursions.
With very little separating the first and fourth placed outfits, Smith kicked for points, as James Maloney did in the opening stanza to level the scores.
Enjoying a bright period following the break, Melbourne continued to press forward despite the loss of winger Marika Koroibete due to a foot laceration.
Making the most of their good field position, Storm found the lead once again with makeshift centre Tohu Harris finding space on the left to find Kurt Mann who finished in the corner.
True to how the contest had been played all evening, the Roosters responded. Some fancy footwork from Michael Jennings opened the door for Jackson Hastings to find Shaun Kenny-Dowall, sending the home faithful into raptures.
With momentum swinging and Storm needing more points the visitors found it through an unlikely source. Front-rower Tim Glasby found himself in the right place at the right time to score after Matt Duffie won an aerial contest.
Refusing to lie down, the Roosters left Melbourne for a nervous period during the closing stages as they drew to within two points once again.
Craig Bellamy’s side managed to keep their heads during the final moments to earn a memorable victory.