The Bulls were lucky not to pay for early handling errors, with Leopards flyhalf Wesley Dunlop missing two penalty kicks in the first 13 minutes.
And while his Bulls counterpart, Louis Fouche, also failed with an attempt in the 18th minute, he was successful with two others to give the visitors a 6-0 lead.
Fouche missed a fourth kick 10 minutes before the break, but recovered with a successful penalty from the halfway line three minutes later to give the visitors a 9-0 advantage shortly before half-time.
Leopards fullback George Tossel gave the hosts some motivation before the break with a penalty in the dying stages to pull three points back, but the hosts nonetheless trailed 9-3.
Both sides showed more urgency after the break, and Tossel wasted no time in narrowing the gap, avoiding a tackle by Gerhard van den Heever to score his team's first try.
The Bulls, however, struck back three minutes later when Fouche added another three points before Warwick Tecklenburg went over for their first try, stretching the gap to 14-8.
Tossel came within inches of extending his points tally in the 55th minute, but his penalty kick hit the upright -- the third Leopards attempt of the night to bounce off the posts.
Leopards lock Brendon Snyman was sent to the sin bin midway through the second half, and seconds later Bulls eighthman CJ Stander bulldozed over the line.
Fouche made no mistake with the conversion, and the Bulls extended their lead to lead 21-8 with 20 minutes left.
The visitors continued to push forward and prop Werner Kruger found a gap after the Bulls had camped on the Leopards tryline, with Fouche converting to put the game virtually out of reach of the hosts.
Centre Jovan Bowles leaped on a loose ball with 13 minutes left, but Dunlop missed the conversion and the Leopards trailed 28-13.
The Bulls were given a scare with eight minutes left when Leopards wing Joubert Engelbrecht dotted down, and Tossel converted, but it was too little too late for the hosts.
Bulls captain Gary Botha said they hoped to build on their recent form, and continue their rise up the log, after losing three of their first four matches.
"We're pleased to know that we're doing things right and hopefully we can keep the momentum going into our next game," Botha said.
Leopards: Tries: George Tossel, Jovan Bowles, Joubert Engelbrecht. Conversions: Tossel. Penalties: Tossel.
Blue Bulls: Tries: Warwick Tecklenburg, CJ Stander, Werner Kruger. Conversions: Louis Fouche (2). Penalties: Fouche (3).