The Bulls maintained their grip on top spot in Super Rugby Unlocked after coming from behind to beat the Lions 30-25 at Ellis Park.
Jake White's men trailed by five points at the break but had the better of the second half in Johannesburg to extend their lead at the top of the Super Rugby table.
An early scrum penalty gave Elton Jantjies the opportunity to settle his nerves from the kicking tee, but Morne Steyn leveled the scores within minutes at the other end of the field.
The Bulls scored the first try of the game in the 13th minute after setting up a line-out in a dangerous position and using their rolling maul to drive the ball over the line, with hooker Joe van Zyl the man flopping down to score. Steyn added the extras to hand the visitors a 10-3 lead.
Ten minutes later, the Lions hit back through Burger Odendaal after some nice interplay with his centre partner Wandisile Simelane saw the former Bulls man cross over, although Jantjies couldn't convert.
The Lions seemed to take confidence from that opening try and there was time for one more score before half-time.
After some good attacking play in the Bulls 22 saw the home side earn a five-metre penalty, they decided to opt for touch and set up the maul, and it was a decision that paid off in spades when scrumhalf Morne van den Berg crashed over from behind the pack. Jantjies succeeded with his conversion on this occasion as the Lions headed into the break with a 15-10 lead.
It took the Bulls just two minutes to open their account in the second half courtesy of another Steyn penalty following an attacking scrum, and six minutes later they retook the lead when Stedman Gans snapped up a wayward Lions pass with a diving interception and dotted down. The Lions had stolen a Bulls lineout moments earlier but made a hash of their attempt to distribute the ball right in front of their own tryline. Steyn converted as the visitors took a 20-15 lead.
Shortly before the hour mark, Steyn got another to chance to take aim at the poles when the Lions buckled at scrum time, and the veteran No 10 maintained his 100% record to hand the Bulls an eight-point advantage.
The Lions desperately needed a response and they found it with 13 minutes to go. Some superb attacking play from inside their own territory freed up Simelane on the outside, and the centre stepped the last defender before beating the covering defence to score a superb try. Jantjies nailed a tricky conversion to bring the hosts back to within one.
But the Bulls hit back within minutes after setting up several phases and probing to the left and right, leading to an easy finish in the left-hand corner for Kurt-Lee Arendse. Steyn nailed the tricky conversion to restore the Bulls eight-point lead and this time there was no way back for the home side.
Trailing by more than a converted try in the dying seconds, the Lions opted to kick for points to at least secure a losing bonus point, but the evening belonged to the Bulls.
Lions - Tries: Burger Odendaal, Morne van den Berg, Wandisile Simelane. Conversions: Elton Jantjies (2). Penalties: Elton Jantjies (2).
Bulls - Tries: Joe van Zyl, Stedman Gans, Kurt-Lee Arendse. Conversions: Morne Steyn (3). Penalties: Morne Steyn (3).
Lions: 15 Gianni Lombard; 14 Stean Pienaar, 13 Wandisile Simelane, 12 Burger Odendaal, 11 Courtnall Skosan; 10 Elton Jantjies (captain), 9 Morné van den Berg; 8 Len Massyn, 7 Vincent Tshituka, 6 MJ Pelser, 5 Marvin Orie, 4 Ruben Schoeman, 3 Carlu Sadie, 2 Jaco Visagie, 1 Sti Sithole.
Replacements: 16 PJ Botha, 17 Nathan McBeth, 18 Ruan Dreyer, 19 Reinhard Nothnagel, 20 Marnus Schoeman, 21 Ross Cronjé, 22 Dan Kriel, 23 Tiaan Swanepoel.
Bulls: 15 David Kriel, 14 Travis Ismaiel, 13 Stedman Gans, 12 Cornal Hendricks, 11 Kurt-Lee Arendse, 10 Morné Steyn, 9 Ivan van Zyl, 8 Duane Vermeulen (captain), 7 Elrigh Louw, 6 Marco van Staden, 5 Walt Steenkamp, 4 Jason Jenkins, 3 Trevor Nyakane, 2 Johan Grobbelaar, 1 Jacques van Rooyen.
Replacements: 16 Joe van Zyl, 17 Gerhard Steenekamp, 18 Marcel van der Merwe, 19 Sintu Manjezi, 20 Nizaam Carr, 21 Embrose Papier, 22 Chris Smith, 23 Marco Jansen van Vuren.
Referee: Rasta Rasivhenge
Assistant referee: Cwengile Jadezweni, Egon Seconds
TMO: Marius van der Westhuizen