The Bulls held on for a nailbiting 25-24 victory over the Pumas in their Currie Cup clash in Nelspruit on Friday evening to secure a home semi-final.
The Pumas came out firing on their home turf and it didn't take them long to register their first score of the day.
Marnus Schoeman picked the ball up from a ruck close to the Bulls line and drove over for their first try in just the third minute of the match, which Justin van Staden converted.
Less than 10 minutes later the Bulls hit back through a well-constructed maul from a line-out that enabled Deon Stegmann to dive over the line, though the conversion was just wide.
Moments later, the visitors had their second from a move that started in their own 22. The wily Warrick Gellant created the space and Jamba Ulengo delivered the finishing touch. Another missed conversion saw the Bulls take a 10-7 lead.
Penalties started flowing as referee Rasta Rasivhenge worked overtime, leading to a stop-start game.
Try-scorer Stegmann conceded one too many at the breakdown for the referee's liking and was shown a yellow card in the 33rd minute. Van Staden failed to make them pay, however, as he missed his second penalty kick of the evening.
Instead it was the Bulls who converted a late penalty courtesy of Tian Schoeman to take a 13-7 lead into half-time.
An early penalty to the Pumas allowed Van Staden to close the gap, but the Bulls would have their third try within minutes, as the returning Stegmann picked up his second of the day from a very similar line-out drive to the one that saw him score his first.
The bonus point try would arrive just short of the hour mark, as Schoeman broke the line before some quality handling freed up Ulengo on the left wing for his second.
The Pumas bounced straight back with a well-worked try from Rosco Speckman, which Van Staden converted to bring the home side back to within eight points.
One minute from time, Rudi Mathee crossed the line for the Pumas' third try after a quick tap-and-go close to the tryline.
Van Staden added the extra points as the hooter sounded, allowing the Bulls to hang on for the narrowest of victories.
Tries: Schoeman, Speckman, Mathee
Cons: Van Staden 3
Pen: Van Staden
For Blue Bulls:
Tries: Stegmann 2, Ulengo 2
Yellow card: Stegmann
Pumas: 15 Hoffmann Marnitz, 14 Bernado Botha, 13 Jerome Pretorius, 12 Stefan Watermeyer (captain), 11 Rosco Speckman, 10 Justin van Staden, 9 Faf de Klerk, 8 Jason-Colin Fraser, 7 Uzair Cassiem, 6 Marnus Schoeman, 5 Rudi Mathee, 4 Giant Mtyanda, 3 Vincent Koch, 2 Francois du Toit, 1 Corne Fourie.
Replacements: 16 Frank Herne, 17 De-Jay Terblanché, 18 Marius Coetzer, 19 Dylan Petersen, 20 Reynier van Rooyen, 21 Hennie Skorbinski, 22 Wilmaure Louw
Blue Bulls: 15 Warrick Gelant, 14 Travis Ismaiel, 13 Dries Swanepoel, 12 Burger Odendaal, 11 Jamba Ulengo, 10 Tian Schoeman, 9 Francois Hougaard, 8 Arno Botha, 7 Lappies Labuschagne (c), 6 Deon Stegmann, 5 Marvin Orie, 4 Jacques du Plessis, 3 Marcel van der Merwe, 2 Bandise Maku, 1 Pierre Schoeman.
Replacements: 16 Corniel Els, 17 Werner Kruger, 18 RG Snyman, 19 Ruan Steenkamp, 20 Ivan van Zyl, 21 Louis Fouché, 22 William Small-Smith.
Referee: Rasta Rasivhenge