The Sharks became the first team to win at Newlands in 2012, beating the Stormers 26-19 in Saturday's Super Rugby semi-final in Cape Town.
They must now travel to Hamilton to face the Chiefs as they continue their quest to become the first team in the history of the tournament to win three consecutive knock-out games on the road.
For the Stormers, the result represents their third home defeat at the semi-final stage.
The Sharks led 13-6 at the interval thanks to a try from Louis Ludik and a drop goal from Fred Michalak.
JP Pietersen's try on the hour mark meant that Gio Aplon's touchdown was too little, too late for the hosts.
Like they did last week in Brisbane, the Sharks built a solid lead and then showed tremendous heart on defence to hold on as the home side scrambled desperately for the try that would level matters.
In the end, the Stormers' lack of invention on attack was shown up while an uncharacteristically high error-count and poor tactical kicking did them no favours.
The Sharks took the field with a team featuring significant alterations to the back-line that had been announced during the week. Ludik moved to the wing to accommodate the inclusion of Riaan Viljoen at full-back while Pietersen was shifted into midfield.
They proved to be crucial changes as the players involved produced both tries.
Peter Grant opened the scoring in the seventh minute from the tee but the Sharks would have been less concerned about the three points conceded than the condition of Bismarck du Plessis, who was seeing stars after taking a savage hit from Eben Etzebeth.
The visitors would have been reassured however when their scrum earned a penalty five minutes later and Michalak could level the scores before the little Frenchman put the visitors ahead with a neat drop goal at the end of the first quarter.
Jean de Villiers came close to scoring but was held up by Willem Alberts. Not much seemed to be going the Stormers' way.
Ludik landed a crucial blow when he plucked Viljoen's high ball out the air and beat three defenders to score. Michalak's conversion left the Sharks leading 13-3 but Grant landed a penalty on the stroke of half-time to keep the Stormers in touch.
Michalak and Grant then swapped penalties after the resumption to leave the Sharks 16-9 ahead, before the visitors crossed for what would prove to be the decisive try.
Pietersen was put into space, stepped Grant, and ghosted home, with Michalak booting the conversion to make it 23-9.
That looked to be the game for the Sharks, but the home side staged a brave recovery with Aplon reducing the deficit when he finished off a move he started to score the Stormers' only try.
Grant added the conversion and he then brought the Stormers within four points with a straightforward penalty in the 73rd minute.
However, the hosts could not get any closer and Michalak's second drop-goal ensured the Sharks will contest their fourth final after those of 1996, 2001 and 2007.
Man of the match: A mention for JP Pietersen who was deadly but the official gong went to Fred Michalak, who pulled all the right strings and finished with 16 points.
Moment of the match: The Stormers were already struggling but when JP Pietersen scored the Sharks' second try the hosts' fate was sealed.
Villain of the match: Plenty of chirps were hurled, but nothing more than a handbag was landed.
For the Stormers:
Pens: Grant 4
For the Sharks:
Tries: Ludik, Pietersen
Cons: Michalak 2
Pens: Michalak 2
Drops: Michalak 2
The Stormers: 15 Joe Pietersen, 14 Gio Aplon, 13 Juan de Jongh, 12 Jean de Villiers, 11 Bryan Habana, 10 Peter Grant, 9 Dewaldt Duvenage, 8 Deon Fourie, 7 Rynhardt Elstadt, 6 Siya Kolisi, 5 Andries Bekker, 4 Eben Etzebeth, 3 Brok Harris, 2 Tiaan Liebenberg, 1 Steven Kitshoff.
Replacements: 16 Frans Malherbe, 17 Deon Carstens, 18 De Kock Steenkamp, 19 Don Armand, 20 Louis Schreuder, 21 Burton Francis, 22 Gerhard van den Heever.
The Sharks: 15 Riaan Viljoen, 14 Louis Ludik, 14 JP Pietersen, 12 Tim Whitehead , 11 Lwazi Mvovo, 10 Frederic Michalak, 9 Charl McLeod, 8 Ryan Kankowski, 7 Marcell Coetzee, 6 Keegan Daniel (c), 5 Anton Bresler, 4 Willem Alberts, 3 Jannie du Plessis, 2 Bismarck du Plessis, 1 Tendai Mtawarira.
Replacements: 16 Craig Burden, 17 Wiehahn Herbst, 18 Steven Sykes, 19 Jean Deysel, 20 Jacques Botes, 21 Odwa Ndungane, 22 Meyer Bosman .
Referee: Steve Walsh
By Ross Hastie at Newlands