A late try from Ruan Nortje allowed the Bulls to reverse a ten-point halftime deficit to beat the Stormers 31-27 at Loftus.
The result ensures that the Bulls will lead the Pro14 Rainbow Cup SA standings and represent South Africa in the North vs South final of the tournament.
After dominating possession in the first half, the Bulls would have been disappointed to enter the break 7-17 behind.
The Stormers opened the scoring with Tim Swiel’s boot before Damian Willemse crossed for the game’s first try and added the conversion himself.
On his return to SA rugby, Marcell Coetzee was impressive, and it was he who put the Bulls on the board with a well-deserved try right after Willemse was sent to the trash. The Stormers were forced to pay for persistent infractions, but the Bulls couldn’t take advantage of the extra man in more points.
Edwill van der Merwe scored a superb try that gave the Stormers ten points at the break, but the Bulls did not want to fold.
Johan Grobbelaar scored the Bulls’ second try in the brand’s manner, after a rolling maul and just before the hour mark the men in blue produced a near carbon copy to ensure the hooker had his second and the Bulls took the lead for the first time in the game. .
Morne Steyn made it 24-17 in favor of the Bulls with a penalty goal that ended in less than 15 minutes on the clock.
Tim Swiel barged in at close range to bring the Stormers back into the game, but missed what would have been a game-leveling conversion.
It looked like it wouldn’t matter when Van der Merwe, who has had a terrific season with the Stormers, broke through for his second.
However, the Bulls were relentless and Ruan Nortje eventually broke with seconds remaining to win the game and first place for the Bulls.
Bulls 31-27 Stormers – Match Information
Bulls 31 (7)
Tests: Marcell Coetzee, Johan Grobbelaar (2), Ruan Nortje
Conversions: Morne Steyn (4)
Stormers 27 (17)
Tests: Damian Willemse, Edwill van der Merwe (2), Tim Swiel
Conversion: Tim Swiel (2)
15 David Kriel, 14 Madosh Tambwe, 13 Marco Jansen van Vuren, 12 Cornal Hendricks, 11 Stravino Jacobs, 10 Morne Steyn, 9 Ivan van Zyl, 8 Duane Vermeulen (captain), 7 Elrigh Louw, 6 Marcell Coetzee, 5 Ruan Nortje, 4 Walt Steenkamp, 3 Mornay Smith, 2 Johan Grobbelaar, 1 Gerhard Steenekamp
Substitutes: 16 Schalk Erasmus, 17 Jacques van Rooyen, 18 Trevor Nyakane, 19 Janko Swanepoel, 20 Marco van Staden, 21 Zak Burger, 22 Chris Smith, 23 Gio Aplon
15 Damian Willemse, 14 Rosko Specman, 13 Ruhan Nel, 12 Rikus Pretorius, 11 Edwill van der Merwe, 10 Tim Swiel, 9 Herschel Jantjies, 8 Evan Roos, 7 Pieter-Steph du Toit, 6 Willie Engelbrecht, 5 Marvin Orie, 4 David Meihuizen, 3 Neethling Fouché, 2 Bongi Mbonambi, 1 Steven Kitshoff (captain)
Substitutes: 16 Andre-Hugo Venter, 17 Ali Vermaak, 18 Frans Malherbe, 19 Ernst van Rhyn, 20 Marcel Theunissen, 21 Godlen Masimla, 22 Dan du Plessis, 23 Sergeal Petersen