Ulster were superb on both sides of the ball, with a four-try attacking display and restricting the Bulls to a solitary score after some brilliant defensive work throughout the match.
Stuart McCloskey, Juarno Augustus, Rob Herring and Cormac Izuchukwu scored tries on the night, with Nathan Doak successfully converting all four.
With the Bulls bringing a strong touring side to Belfast, their starting lineup alone had eight Springbok internationals included, showing the size of the task Ulster had to face following last week's postponed Round 2 fixture against Edinburgh.
Ulster named a strong side, with Juarno Augustus making his first start alongside Sam Crean at loosehead prop. Rob Baloucoune made his first start of the season, and Jacob Stockdale started at full-back.
The Bulls started the game on the front foot and 3 minutes in got an opportunity to attack from a 5m lineout. Ulster's defence was strong and the maul defence forced a knock on to give the home side a chance to ease the early pressure.
Ulster opened the scoring, after Ireland international centre, Stuart McCloskey, read a misplaced pass from the Bulls and he showed his speed and power to compete against the last defender, before a clever kick that helped him to ground the ball over the line. A brilliant score that he could hardly celebrate - with the Bangor man getting a knee to the nose for his troubles. Doak hit his first conversion of the night for a 7-0 lead.
The South Africans fought their way back into things and after a period of sustained pressure, Rob Herring was shown a yellow card after a series of penalties. Shortly afterwards, Springbok tighthead, Wilco Louw, muscled his way over the tryline to score, with Springbok legend, Handre Pollard, converting the try and equalling the scoreline at 7-7.
Nathan Doak was unfortunate to see his long range penalty strike ping off the posts, which would have edged the 14 men in front.
In a key part of the game, Ulster held out to the break with things all square.
HT: Ulster Rugby 7-7 Vodacom Bulls
With Ulster welcoming Herring back from the sin-bin, Bulls number eight, Jeandre Rudolph, was shown a yellow card early in the second half.
Ulster amped up the pressure, and after a number of attacking phases, it was Juarno Augustus, who made the decisive action on his first start for his new club.
The number eight powering over in a cluster of a maul for Ulster's second try, with Doak converting again.
With confidence now flowing, Ulster kicked to the corner and geared up for an attacking lineout. Skipper Iain Henderson, took the throw in beautifully, and Ulster hooker, Rob Herring, finished off the driving maul expertly, peeling off the back to finish. Doak converted for a 21-7 lead.
The bonus-point try then came when Jack Murphy delicately placed a cross field kick overhead to David McCann, with the flanker finding himself on the right channel.
McCann gathered the kick, and showed brilliant awareness and execution to pass to Cormac Izuchukwu, who used his rangy strides to burst through the space and score.
Like McCloskey in the first half, he also celebrated his try in some pain after an awkward landing.
The Bulls pressed for a way back into the match, but Ulster's rearguard action was strong and hellbent on seeing the match out.
The full-time whistle went and Ulster celebrated a fantastic bonus-point win in front of the loud home support.
The contest was perfect preparation before the team head to South Africa to face Hollywoodbets Sharks and Emirates Lions in Rounds 4 and 5 of the URC.
BKT United Rugby Championship Player of the Match - Nathan Doak
Superb from the tee, with four out of four conversions, Doak was excellent as he popped up all over the pitch and kept Ulster's attack ticking with quick out ball.
With the South Africans so aggressive around rucks and scrums, the Ulster scrum-half was sharp all night at giving his forwards help and releasing the backs to hit the Bulls on the counter.
Scorers
Ulster:
TRY: McCloskey, Herring, Augustus, Izuchukwu
CON: Doak x4
Bulls:
TRY: Louw
CON: Pollard
Teams
Ulster: Stockdale; Baloucoune, Hume, McCloskey, Ward; Murphy, Doak; Augustus, Timoney, McCann, Izuchukwu, Henderson (C), O'Toole , Herring, Crean
Replacements: Stewart, O'Sullivan, Wilson, Sheridan, Reffell, McKee, Flannery, Postlethwaite.
Bulls: Williams; de Klerk, Moodie, Vorster, Jacobs; Pollard, Burger;
Steenekamp, Grobbelaar (C), Louw, Wiese, van Rensburg, van Staden, Gumede, Rudolph
Replacements: Else, Wessels, Smith, Ludwig, Xaba, de Wet, Kriel, Le Roux.
Post-Match Reaction
post match reaction with the boss 🎙️ pic.twitter.com/biTPtVhmqt
— Ulster Rugby (@UlsterRugby) October 11, 2025