United Rugby Championship
Cardiff (5) 12
Tries: Grady, Lee-Lo Con: De Beer
Bulls (12) 18
Tries: Papier, De Klerk Con: Smith Pens: Smith 2
Cardiff fell just short of claiming a first win over Bulls after another near miss at the Arms Park.
The South Africans took an early 12-0 lead when scrum-half Embrose Papier and wing Sebastian de Klerk both scored in the space of four minutes.
Cardiff hit back through tries from wing Mason Grady and centre Rey Lee-Lo either side of half-time.
However, Bulls fly-half Chris Smith kicked two penalties as the hosts' comeback fell just short.
The win saw Jake White's side take top spot in the United Rugby Championship (URC) while Cardiff have now won just one of their opening four games of the season under new coach Matt Sherratt.
The only consolation is that they have taken a bonus point from all three narrow defeats.
However, there will be frustration that another potential victory slipped through their grasp, following the last-minute defeat here to Benetton on the opening weekend.
Cardiff had chances to win this, not least when Bulls were down to 14 men after David Kriel was shown a yellow card for deliberately blocking Harri Millard's pass.
Lee-Lo slipped through for Cardiff's second to cut the deficit to 15-12.
But Willis Halaholo, who celebrated his 100th appearance, dropped one chance and number eight Lopeti Timani fumbled another.
Millard's pace was a threat throughout but the wing should have created a third try with another burst, but he failed to find either Tomos Williams or Teddy Williams inside.
Cardiff's breakdown defence earned a last-gasp chance but they spilt possession at the lineout drive and Bulls cleared the danger. It summed up Cardiff's night - and season.
Wales head coach Warren Gatland was in the 6,100-strong Arms Park crowd and will have been impressed at the early impact of props Corey Domachowski and Welsh-qualified Rhys Litterick.
However Cardiff's promising start was rocked by conceding two tries in the space of four minutes.
The first was all about the creativity and footwork of their centres Stedman Gans and Kriel who combined before scrum-half Papier scampered over.
Wing De Klerk then capitalised when a Cardiff attack broke down on halfway, picking up the ball for a clear run to the line.
Cardiff hit back on 22 minutes through Grady but it was the work of the forwards from a lineout 15 metres out that handed the wing an easy finish on the opposite side.
Cardiff did well to deny Bulls before half-time before Lee-Lo's try set up a nail-biting second half but Bulls held out.
Cardiff head coach Matt Sherratt said:
"All four games have had just one score in it and we will take the positives from that performance.
"I have a clear ambition of what a Cardiff performance should look like and that was closer to it than the win over Dragons.
"We have young guys learning in a tough environment and results can affect players but we are fronting up in every game and that's what everyone wants to see."
Cardiff: Jacob Beetham; Harri Millard, Rey Lee-Lo, Willis Halaholo, Mason Grady; Tinus de Beer, Tomos Williams; Corey Domachowski, Efan Daniel, Rhys Litterick, Teddy Williams, Rory Thornton, Alex Mann, Ellis Jenkins (capt), Lopeti Timani.
Replacements: Ethan Lloyd, Rhys Carre, Will Davies-King, Seb Davies, Thomas Young, Ellis Bevan, Arwel Robson, Cameron Winnett.
Bulls: Devon Williams; Sebastian de Klerk, Stedman Gans, David Kriel, Sergeal Petersen; Chris Smith, Embrose Papier; Simphiwe Matanzima, Akker van der Merwe, Wilco Louw, Reinhardt Ludwig, Janko Swanepoel, Nizaam Carr (capt), Cyle Brink, Mpilo Gumede.
Replacements: Johan Grobbelaar, Gerhard Steenekamp, Mornay Smith, Ruan Nortje, Elrigh Louw, Keagan Johannes, Johan Goosen, Cameron Hanekom.
Referee: Sam Grove-White (SRU)
Assistant referees: Tom Spurrier & Steff Edwards (WRU)
TMO: Stefano Penne (FIR)