After kicking six penalties and a conversion at Loftus Versfeld stadium, the fly-half scored a last-minute try to seal an eighth consecutive victory over Waratahs and deprive them of a losing bonus point they deserved.
Scrum-half Francois Hougaard, who came on as a second-half replacement for Jano Vermaak after a lengthy injury absence, was the other Bulls scorer with a try in front of a 21 000 crowd.
GALLERY: Super Rugby - Week 11
Full-back Israel Folau, substitute prop Paddy Ryan and fly-half Bernard Foley scored a try each for the Canberra outfit and scrum-half Brendan McKibbin kicked two conversions, while missing another and two penalty attempts.
Victory enabled Bulls to go four points ahead of the Sharks in the South African conference and they lie third on the combined standings behind leaders Brumbies of Australia and title-holders Waikato Chiefs of New Zealand.
Waratahs stayed third on the Australian table behind Brumbies and Queensland Reds and 11th overall - a placing that does not do justice to a team which always looked threatening with ball in hand.
Bulls lorded the line-outs as Springboks Flip van der Merwe and Juandre Kruger won all their throws and stole almost half of the Waratahs in cool, late autumn conditions.
But the Bulls scrum, once a feared unit in Super Rugby, was nowhere near as effective despite the return of Springbok loose-head Dean Greyling after a long spell sidelined by injury.
It was a match of contrasts with the Bulls sticking to their kick-and-chase approach that has served them so well in the past with three Super Rugby titles in the trophy room.
Waratahs ran the ball much more and some multi-phase attacks left the Bulls defence dizzy as the visitors' backs and forwards confidently moved the ball around the park.
Steyn, who joins Paris club Stade Francais in October on a three-year contract, succeeded with four of five first-half penalty attempts to forge a 12-5 half-time lead while Folau used his formidable physique to burst over.
Waratahs drew level four minutes after the break when flanker Michael Hooper set up Ryan for a converted try and after another Steyn penalty nudged the Bulls in front again, Foley struck and McKibbin converted for a 19-15 advantage.
But
Bulls finished stronger as Hougaard dived over from close range and
Steyn converted, added a penalty and went over far out to secure a
flattering victory margin.
Teams:
15 Ulrich Beyers, 14 Akona Ndungane, 13 JJ Engelbrecht, 12 Jan Serfontein, 11 Bjorn Basson, 10 Mornè Steyn, 9 Jano Vermaak, 8 Pierre Spies (captain), 7 Arno Botha, 6 Dewald Potgieter, 5 Juandrè Kruger, 4 Flip van der Merwe, 3 Werner Kruger, 2 Chiliboy Ralepelle, 1 Dean Greyling
Substitutes: 16 Willie Wepener, 17 Frik Kirsten, 18 Wilhelm Steenkamp, 19 Jacques Potgieter, 20 Francois Hougaard, 21 Louis Fouchè, 22 Lionel Mapoe
Waratahs:15 Israel Folau, 14 Cam Crawford, 13 Adam Ashley-Cooper, 12 Rob Horne, 11 Tom Kingston, 10 Bernard Foley, 9 Brendan McKibbin, 8 Wycliff Palu, 7 Michael Hooper, 6 Dave Dennis (captain), 5 Kane Douglas, 4 Sitaleki Timani, 3 Sekope Kepu, 2 Tatafu Polota-Nau, 1 Benn Robinson.
Substitutes: 16 John Ulugia, 17 Paddy Ryan, 18 Mitchell Chapman, 19 Pat McCutcheon, 20 Matt Lucas, 21 Ben Volavola, 22 Peter Betham