The home team finished just outside the play-off places while the Bulls still secured a home semifinal in two weeks' time despite being leapfrogged at the summit by New Zealand's Waikato Chiefs.
The Stormers were roared to victory by a capacity crowd as Eben Etzebeth, Bryan Habana and captain Jean de Villiers grabbed tries in an efficient attacking performance complimented by some ferocious defending when the visitors launched a second-half comeback bid.
Flyhalf Gary van Aswegen was successful with all six of his kicks at goal, landing three penalties and three conversions.
"We missed a trick tonight with an opportunity to finish top but we are in play-off rugby now and that's all that counts and that is where our focus will be," said Bulls captain Dewald Potgieter.
Lock Etzebeth drove over from a short lineout after nine minutes before Habana, playing his final game for the Stormers before moving to French club Toulon, sprinted between the posts six minutes later.
Zane Kirchner reduced the deficit with a try but three successive penalties from Van Aswegen ensured a 23-13 advantage at the interval.
De Villiers, who had a 10-minute spell in the sinbin for a dangerous tackle, scored the only touchdown of the second half after picking the ball up just before the line and diving over.
"It's nice to end the season with a win but it would have been nicer if we had performed like this throughout the year," he said. – Reuters