The Stormers put their full array of attacking skills on display as they beat the Bulls 41-33 at Loftus Versfeld on Saturday.
It was the last outing of the season for the Bulls, but the Stormers return to Cape Town where they will host the Chiefs in a repeat of last year's quarterfinal.
The Stormers outscored the Bulls by six tries to five in an entertaining encounter.
Even though the Stormers did not require any assistance from the match officials, Japanese referee Kubo Shuhei and his assistants were very liberal with their freebies.
It was the 10th victory of the season for the Stormers and their second against the Bulls, but they were made to work hard for it.
The Stormers will face the Chiefs in their Super Rugby quarterfinal at Newlands next Saturday.
The first half was a breathless affair as the teams traded blows, each scoring three tries in an entertaining 40 minutes.
The home side struck first as lock Jason Jenkins forced his way over from close range, but it was not long before the Stormers were back on level terms as Cheslin Kolbe showed incredibly quick feet to step past a number of Bulls defenders and score under the uprights.
The Stormers took the lead when a patient build-up in opposition territory with great touches from the likes of Jano Vermaak and Dillyn Leyds saw flank Sikhumbuzo Notshe go over for a try.
However, the Bulls hit back with two further tries of their own as first wing Duncan Mathews and then outside centre Jesse Kriel scored to give them a 21-12 advantage.
To their credit the Stormers did not allow their heads to drop and following a penalty from flyhalf Damian Willemse they took the lead back with a try from Leyds which was set up by a break from Seabelo Senatla and some impressive interplay between forwards and backs.
That gave the Stormers a slender 21-22 lead at the half-time break, with everything to play for in the second half.
The Bulls were reduced to 14 men at the start of the second half when prop Conraad van Vuuren was shown a yellow card for a dangerous tackle on Leyds.
The Stormers took advantage immediately as they charged upfield, with captain Siya Kolisi burrowing his way over for their fourth try which stretched their lead out to 29-21.
They followed that up with another try from Willemse after another impressive break from Leyds to put the visitors firmly in the driving seat with 20 minutes left to play.
The Bulls scored their first points of the second half with a try from replacement scrumhalf Piet van Zyl who broke from a ruck to score in the corner.
The home side were right back in it shortly afterwards when Kriel intercepted in midfield to race away and reduce the Stormers lead to 34-33 with 10 minutes left.
That meant a tense ending to the game, but the Stormers landed the final blow as Senatla crossed for their sixth try to seal the win.
Man of the match: Jan Serfontein and Jesse Kriel were two of the players that provided impetus and energy to the Bulls. Eben Etzebeth was a colossus with ball in hand and a rock on defence - while he was not bad in open play either. Stormers fullback Dillyn Leyds and wing Cheslin Kolbe had a field day against porous Bulls defence. Of the two the best was Leyds - who wins our award.
For the Bulls:
Tries: Jenkins, Matthews, Kriel 2, Van Zyl
Cons: Schoeman 3, Jantjies
For the Stormers:
Tries: Kolbe, Notshe, Leyds, Kolisi, Willemse, Senatla
Cons: Williams 4
Yellow card: Conrad Janse van Vuuren (Bulls, 52 - foul play, high tackle)
Bulls: 15 Warrick Gelant, 14 Travis Ismaiel, 13 Jesse Kriel, 12 Jan Serfontein, 11 Duncan Matthews, 10 Tian Schoeman, 9 Rudy Paige, 8 Nic de Jager, 7 Jannes Kirsten, 6 Shaun Adendorff, 5 Rudolph Snyman, 4 Jason Jenkins, 3 Conrad Janse van Vuuren, 2 Adriaan Strauss (captain), 1 Pierre Schoeman.
Replacements: 16 Jaco Visagie, 17 Trevor Nyakane, 18 John Roy Jenkinson, 19 Ruben van Heerden, 20 Ruan Steenkamp, 21 Piet van Zyl, 22 Tony Jantjies, 23 Burger Odendaal.
Stormers: 15 Dillyn Leyds, 14 Cheslin Kolbe, 13 EW Viljoen, 12 Damian de Allende, 11 Seabelo Senatla, 10 Damian Willemse, 9 Jano Vermaak, 8 Nizaam Carr, 7 Sikhumbuzo Notshe, 6 Siyamthanda Kolisi (captain), 5 Pieter-Steph du Toit, 4 Eben Etzebeth, 3 Frans Malherbe, 2 Bongi Mbonambi, 1 Jacobus Janse van Rensburg.
Replacements: 16 Ramone Samuels, 17 Steven Kitshoff, 18 Frans van Wyk, 19 Chris van Zyl, 20 Juarno Augustus, 21 Justin Phillips, 22 Juan de Jongh, 23 Dan Kriel.
Referee: Kubo Shuhei (Japan)
Assistant referees: Federico Anselmi (Argentina), Jaco van Heerden (South Africa)
TMO: Marius Jonker (South Africa)