The forwards paved the way for the first try on the new surface. Following a sustained period of pressure on the Bulls try line the South Africans conceded a penalty, Ulster elected to take a tap and go with hooker Tom Stewart barging over from close range to score his third try in two games.
Nathan Doak added the conversion from in front of the posts.
Ulster should have added to their tally on 17 minutes. Will Addison fielded a loose kick out of defence and led a counter-attack, taking it into Bulls territory before putting in a clever grubber kick centre Jude Postlewaite with an open try line knocked on as he attempted to gather the ball.
Addison was sin-binned for deliberately killing the ball close to his own line on 26 minutes, the Bulls went to the corner from the resulting penalty but an overthrow at the lineout allowed Ulster to clear.
Despite their numerical disadvantage, Ulster added a second try on 29 minutes.
With a penalty coming Doak moved the ball wide quickly, returning Ireland prop Tom O’Toole slung a long pass to Jacob Stockdale, the winger acrobatically finished in the corner before being bungled into touch. Doak slotted over the extras from a tight angle.
The Bulls got back in the game just before Addison returned after their first sustained period of pressure in the Ulster 22.
Former Ulster backrow Marcell Coetzee punched a hole in the home defence before prop Gerhard Steenekamp blasted his way through Stewart and Andy Warwick to cross the whitewash with out half Johan Goosen converting.
The Bulls exposed the Ulster defence again in first-half injury-time, the pack probed close to the line before the ball was moved wide, full back Devon Williams threw a pass to unmarked winger Sebastian De Klerk to trot over.
Goosen failed to covert and Ulster went into the break with a 14-12 lead.
Doak was on target two minutes after the restart as the Bulls went off their feet at the ruck in the shadows of their own posts.
Stockdale was unlucky not to get his second try on 50 minutes, he came on to a crash ball on his own 10 metre and carried deep into the Bulls’ 22, the visitors went off their feet at the ruck allowing Doak to extend Ulster’s lead with a simple penalty.
The Bulls gifted Doak another three points on 63 minutes as lock Ruan Vermaak deliberately knocked on allowing the Ulster scrum half to land his third penalty.
The South Africans set up a tense finish with their third try on 68 minutes. From a scrum in the Ulster 22, Nizaam Carr picked from the base and broke a couple of tackles before flanker Elrigh Louw went over with Goosen converting.
Doak made it a seven-point game with his fourth penalty on 73 minutes.
Ulster had to survive one last period of pressure ad the Bulls kicked a penalty to the corner in the final minute.
From the lineout the South African pack drove for the line but as the ball came loose David McCann was able to pounce on it, allowing Doak to smash it into touch and preserve the victory.
ULSTER: W Addison; R Baloucoune; J Hume, J Postlethwaite, J Stockdale; B Burns, N Doak;
A Warwick, T Stewart, T O’Toole, A O’Connor, C Izuchukwu, D Ewers, N Timoney, D McCann.
Replacements: J Andrew for Stewart 76 mins, C Reid for Warwick 64 mins, G McGrath, H Sheridan for Izuchukwu 37 mins, M Rea for Ewers 41 mins , D Shanahan, S Moore for Stockdale 75 mins, M Lowry for Addison 56 mins
BULLS: D Williams; S de Klerk, D Kriel, C Hendricks, S Jacobs; J Goosen, E Papier;
G Steenkamp, J Grobbelaar, W Louw, R Vermaak, R Nortje, M Coetzee, C Hanekom, E Louw.
Replacements: A ven der Merwe for Grobbelaar 51 mins, S Matanzima for Steenkamp 47 mins, M Smith for Louw 51 mins, R Ludwig for Hanekom 51 mins N Carr for Nortie 64 mins, Z Burger for Papier 69 mins, C Smith S Gans for Kriel 63 mins
Referee: Gnecchi (Italy)