The Lions, in no mood to hand out favours, nearly ruined the Bulls' playoff aspirations, but the hosts hit back in the second half at Loftus Versfeld on Saturday to book their place in the Super Rugby knockout stages.
While the victory was good enough to send the Bulls into the next round of the competition, joining fellow South African sides the Stormers and the Sharks, the Lions made them work hard for it.
Their five-point victory cemented fifth place on the log and the Bulls face the difficult task of travelling to Christchurch for a match against the Crusaders next week.
In taking full points from the match, the Bulls did the Sharks a favour by bunny-hopping ahead of them on the overall log.
The Sharks will now – in what is regarded an easier prospect – play the Reds in Brisbane, while the Stormers will have a bye next weekend by virtue of finishing at the top of the table.
The Lions, who finished bottom of the standings, drew first blood with a penalty conversion by Elton Jantjies four minutes into the clash.
The home side, however, equalled the scores when Morne Steyn succeeded with a penalty conversion 10 minutes later.
The tide turned in the Bulls' favour when winger Akona Ndungane intercepted a floating pass from Lions flyhalf Elton Jantjies to score the first try of the evening after 16 minutes of play, with Steyn converting.
Jantjies shortened the deficit eight minutes later with a penalty conversion, but Bulls winger Bjorn Basson extended the lead after half an hour, scoring his 10th try of the season.
Scrumhalf Francois Hougaard made a run from a scrum in the Lions' 22, pulled in two defenders and offloaded to a speeding Basson, who scored under the posts, with Steyn converting.
Lions scrumhalf Michael Bondesio hit back five minutes later when he also picked the ball up from a scrum to break to his right, dummy and score.
Jantjies converted to bring his side within four points of the Bulls, while Steyn succeeded with a penalty conversion with only two minutes left in the second half (20-13).
The visitors' dogged determination saw them cross the whitewash on the halftime whistle, with a beardless Joshua Strauss scoring from a driving maul after a successful lineout five metres from the line.
Jantjies converted to level the scores at 20-20 going into the break.
The Bulls hit their straps in the second period, adding two more tries to take the match away from the visitors.
Hougaard scored the Bulls' third try shortly after the restart with an enterprising run from a ruck on the Lions' 22-metre line, with Steyn converting.
Five minutes later flanker Jacques Potgieter secured the bonus point with their fourth try.
Steyn converted and added another three points with a successful penalty attempt with 15 minutes left in the match.
The Bulls fended off a charging Lions team to keep the scores unchanged in the dying stages.
Bulls 37 (20): Tries: Akona Ndungane, Bjorn Basson, Francois Hougaard, Jacques Potgieter. Conversions: Morne Steyn (4). Penalties: Steyn (3).
Lions 20 (20): Tries: Joshua Strauss, Michael Bondesio. Conversions: Elton Jantjies (2). Penalties: Elton Jantjies (2). – Sapa