Chris Henry and Ruan Pienaar crossed for Ulster but Guglielmo Palazzani touched down for a resurgent Zebre, who went in trailing 14-10 at the interval.
Stuart Olding, Jacob Stockdale, Robbie Diack and David Busby ran in second-half tries, Mattia Bellini for Zebre.
Ulster have now earned bonus-point wins from their last three Pro12 matches.
It was a patchy performance from the Irish province, who will hope to secure further five-point victories in their next two fixtures at home to Treviso on 3 March and Zebre on 11 March as they aim to clinch the top-four spot which would see them compete in the end-of-season semi-final play-offs.
Ulster have a match in hand over their rivals in the upper reaches of the table, namely that Kingspan Stadium encounter with Zebre, which was rearranged after being postponed because of a frozen pitch on 25 November.
The northern province face a tough run-in to their campaign however, as they face Welsh sides Dragons, Cardiff and Ospreys, plus inter-provincial derby contests with Munster and Leinster.
Les Kiss's side came into the game on the back of triumphs over Scottish sides Edinburgh and Glasgow, but suffered a setback on Saturday when South African flanker Marcell Coetzee was forced to withdraw from the visiting line-up because of illness, Sean Reidy his replacement.
Media playback is not supported on this device
The hosts, who had conceded 152 points in losing their last three fixtures, were without 11 players who formed part of the Italy squad which travelled to Twickenham to face England, nine of those ultimately being included in the 23-man matchday squad for the Six Nations game.
Ulster's hopes of making the top four took a dent when the Scarlets beat Munster 30-21 away from home on Friday night and Darren Cave and Louis Ludik were both missing because of concussion, as Kiss made 10 changes from the team which overcame Glasgow in Belfast last week.
On the plus side, Charles Piutau and Stuart Olding were restored to the Ulster side, Tommy Bowe was available to make his 150th appearance for the province and Jared Payne was named among the replacements, having not played since sustaining a fractured kidney while playing for Ireland against Australia in November.
Henry rumbled over for an early try after a strong driving maul, then Pienaar dotted down under the posts after a pacy counter-attack which saw Piutau race down the wing and execute a fine inside pass to his scrum-half.
Ulster appeared to lose concentration and focus for the remainder of the half as Zebre fought their way back, Palazzani converting his own try, after Luke Marshall spilled the ball inside his own 22, to reduce the deficit to seven points by the 16th minute.
Palazzani's penalty before the break further reduced the arrears, but when Olding and Stockdale completed fine Ulster moves by touching down, the visitors had the bonus point in the bag after 51 minutes.
Bellini's try gave spirited Zebre some hope but Diack went over in the corner after some fancy footwork by Piutau to put Ulster in control again.
Busby marked his debut by adding a sixth try, getting on the end of a clever left-footed grubber-kick by Payne, who had been introduced as a second-half substitute. Pienaar missed the conversion after successfully slotting over his previous five attempts.
Ulster Director of Rugby Les Kiss: "It was a bit frustrating at times without a doubt but, in the end, it was mission accomplished.
"We put ourselves under pressure and half-time couldn't come quickly enough for me. There were a few choice words said at half-time but we responded well and improved in the second half, even though we took our foot off the pedal for a while."
Zebre: D Berryman; M Bellini, T Boni, M Pratichetti, L Greeff; S Bordoli, G Palazzani; B Postiglioni, O Fabiana, G Roan; G Koegelenberg, V Bernabo (capt); D Bergamin, J Meyer, F Ruzza.
Replacements: S Tobias for Fabiani (73), A De Marchi for Postiglioni (63), B Le Roux for Roan (48), J Furno for Bernabo (61), D Fragnito for Bergamin (67), C Engelbrecht for Berryman (58), T Castello for Pratichetti (50), S Balocchi for Greef (60)
Ulster: J Stockdale; T Bowe, L Marshall, S Olding, C Piutau; P Nelson, R Pienaar; A Warwick, R Herring (capt), W Herbst; R Diack, A O'Connor; C Ross, C Henry, M Coetzee
Replacements: J Andrew for Herring (56), C Black for Warwick (64), R Lutton for Herbst (33), K Treadwell for O'Connor (73), R Wilson for Henry (60), P Marshall for Nelson (73), J Payne for L Marshall (60), D Busby for Piutau (76).
Referee: Sean Gallagher (IRFU)
Ulster ran in six tries as they moved to within five points of fourth-placed Scarlets in the Pro12 by securing a bonus-point win over Zebre in Parma.