Their Irish visitors held a 9-3 lead at the break, but had no reply to the home side's second half surge, spurred on by the biggest Vodacom URC crowd this season.
The Vodacom Bulls upped the tempo in the second stanza and where Ulster had the best of the tight exchanges in the opening 40 minutes, there was no stopping flank Marcell Coetzee and his men.
The first half did not start well for Ulster winger Ethan McIlroy who had to leave the field in the third minute after being left dazed in a collision with his direct opponent Madosh Tambwe.
That did not deter the visitors’ early onslaught though, who benefitted from some ill-discipline by the men in blue.
Ulster twice opted for the attacking lineout drive but a knock-on blew the early scoring chance. The third penalty against the Bulls in the opening ten minutes saw Ulster going for the points, with scrumhalf Nathan Doak kicking the first of three penalty goals in the half.
Vodacom Bulls flyhalf Chris Smith missed a long range effort from near the halfway linen but slotted another from straight in front 10 minutes later when some delightful supporting play by the home side forced Ulster to slow down the ball near their own line.
The host started to press on attack, but it was Doak again who got the next points. Duane Vermeulen (No 8) forced a penalty on defence and the scrumhalf's 45 meter effort went through the middle of the uprights 33 minutes in. He did so again two minutes later, this time from 53 meters out as the home side conceded their eighth penalty of the match – after again being penalised on the floor.
Doak had a fourth shot at goal just before the break, this time with Elrigh Louw (No 8) straying offside, but he pushed it to the right.
The Pretoria outfit started the second half with Arno Botha on the flank in place of Cyle Brink and the former Springbok found himself in the middle of the action immediately.
His strong run sparked a wave of attacks with Tambwe almost scoring from yet another attacking ruck, and eventually Coetzee scored against his old province.
That converted try pushed the home side into the lead for the first time in the match (10-9). Smith kicked a second penalty goal and that not only created some score board pressure, but also an injection of confidence.
Tambwe scored a beauty of a try, finishing in the corner and flyhalf Chris Smith kicked a tight conversion to push their lead to 20-9.
Ulster seemed flustered, although they recovered with a well-taken try by centre Luke Marshall. The midfielder ran onto a flat pass by flyhalf Ian Madigan to crash over under the sticks. Doag converted and suddenly the points margin was only four again.
That comeback was thwarted again when lock Kieran Treadwell was yellow carded for a high shot on fullback Kurt-Lee Arendse. The Bulls opted for an attacking lineout and the outnumbered Ulster pack was helpless to prevent hooker Johan Grobbelaar being driven over the line. Replacement flyhalf Morne Steyn converted and their lead was commanding once again at 27-16.
Unfortunately for the hosts Coetzee was yellow-carded for a similar tackle as the one executed by Treadwell seven minutes from time, meaning that Ulster had the numerical advantage in the last five minutes of play.
That, however, did not matter as Arendse intercepted near his own line and raced 85 meters to score under the sticks, which not only sealed the match, but also secured the bonus point for his team.
Scorers:
Vodacom Bulls 34 (3) - Tries: Marcell Coetzee, Madosh Tambwe, Johan Grobbelaar, Kurt-Lee Arendse. Conversions: Chris Smith (2), Morne Steyn (2). Penalty goals: Smith (2).
Ulster 16 (9) – Try: Luke Marshall. Conversion: Nathan Doak. Penalty goals: Doak (3).