The Cheetahs held off a powerful second-half charge by the Bulls to secure a thrilling 34-28 win in Bloemfontein on Saturday.
The Cheetahs, who held a commanding 28-14 lead at half-time and a 31-14 advantage going into the last 15 minutes, outscored the Bulls by four tries to three.
For the second consecutive week the Bulls came back strongly after a slow start, but had to be content with a losing bonus point.
In a South African derby of contrasting halves, the Cheetahs attacked relentlessly in the first half and defended superbly after the break.
Cheetahs scored four converted tries first-half tries.
It was a different story in the second half, though, as the Bulls dominated possession and territory and two converted tries in quick succession narrowed the gap to three points.
The Cheetahs held their nerve and Fred Zeilinga completed a flawless goal-kicking performance with his second penalty of the half to double the lead.
Victory was a huge relief for the hosts after starting the season last weekend with an unlucky home loss to 2016 runners-up and fellow South Africans the Lions.
For the second successive weekend three-time former champions the Bulls paid dearly for a sluggish first half, having begun their campaign with a loss at the Western Stormers.
"Character earned us this victory," said Cheetahs skipper and hooker Torsten van Jaarsveld, deputising for the injured Francois Venter.
"Our plan was to move the huge Bulls forwards around the heavy field to tire them, and it worked.
"I am disappointed that we left points on the field for the second match in a row. We have got to be more clinical."
Bulls skipper and flyhalf Handré Pollard, a Springbok slowly regaining form after missing last season through injury, lamented another poor first half showing.
"It was the same story as last weekend, falling far behind and then playing catch-up.
"We cannot continue like this - showing great character but losing matches. Even when playing second fiddle in the first half, there were chances we did not take."
Teboho Mohoje scored two tries, with Clinton Swart and Justin Basson adding one each for the winners while Zeilinga slotted four conversions and two penalties.
Jason Jenkins, Piet van Zyl and Jamba Ulengo were Bulls' try scorers. Tian Schoeman kicked two conversions and Pollard three penalties.
Cheetahs host the Japanese Sunwolves next weekend while the Bulls have a bye.
Man of the match: Bulls locks Rudolph Snyman and Jason Jenkins were industrious, while Travis Ismaiel also looked to get involved even when the ball was not flowing his way. Clayton Blommetjies, Ryno Benjamin, Clinton Swart (before his injury) and Raymond Rhule were what gave the Cheetahs attack its sting. But it was up front where the Cheetahs had the edge - especially the loose trio of Paul Schoeman, Teboho Mohoje and Uzair Cassiem. And that loose trio wins our award as a combination.
For the Cheetahs:
Tries: Swart, Mohoje 2, Basson
Cons: Zeilinga 4
Pens: Zeilinga 2
For the Bulls:
Tries: Jenkins, Van Zyl, Olengo
Cons: Schoeman 2
Pens: Pollard 3
Cheetahs: 15 Clayton Blommetjies, 14 Ryno Benjamin, 13 Nico Lee, 12 Clinton Swart, 11 Raymond Rhule, 10 Fred Zeilinga, 9 Tian Meyer, 8 Paul Schoeman, 7 Teboho Mohoje, 6 Uzair Cassiem, 5 Reniel Hugo, 4 Justin Basson, 3 Johan Coetzee, 2 Torsten van Jaarsveld (captain), 1 Retshegofaditswe Nché.
Replacements: 16 Elandré Huggett, 17 Charles Marais, 18 Danie Mienie, 19 Francois Uys, 20 Niell Jordaan, 21 Zee Mkhabela, 22 Niel Marais, 23 Johannes Prinsloo.
Bulls: 15 Jesse Kriel, 14 Travis Ismaiel, 13 Burger Odendaal, 12 Dries Swanepoel, 11 Jamba Ulengo, 10 Handré Pollard (captain), 9 Rudy Paige, 8 Hanro Liebenberg, 7 Jacques Potgieter, 6 Nick de Jager, 5 Rudolph Snyman, 4 Jason Jenkins, 3 Trevor Nyakane, 2 Jaco Visagie, 1 Lizo Gqoboka.
Replacments: 16 Edgar Marutlulle, 17 Pierre Schoeman, 18 Jacobie Adriaanse, 19 Renaldo Bothma, 20 Ruan Steenkamp, 21 Piet van Zyl, 22 TianSchoeman, 23 Warrick Gelant.
Referee: Shuhei Kubo (Japan)
Assistant referees: AJ Jacobs (South Africa), Lourens van der Merwe (South Africa)
TMO: Marius Jonker (South Africa)
For more rugby news, visit Rugby365.com