South African Dries van Schalkwyk went over twice for the Italian team who will be devastated having come within inches of a win for the second game in succession.
Ulster had taken an early lead with a Niall O'Connor penalty but the Italians hit back almost immediately.
From the restart scrum-half Tito Tebaldi went over, continuing his good recent form to put the home side in front.
Missing a lot of their Irish internationals Ulster needed to settle quickly and they bounced back well from conceding the early try with two penalties from O'Connor as they edged the battle at the breakdown.
However while Ulster were doing well at slowing up Zebre ball, their failure to claim restarts was proving costly.
Zebre got themselves back to within a point on the stroke of half-time with Daniel Halangahu's penalty, and the Australian went one better after the break when he went over for the Italians' second try to make it 13-9 to the home side.
O'Connor pulled three points back for the league leaders but van Schalkwyk then went over for his first try to stretch Zebre's lead to 18-12 after 54 minutes.
Mark Anscombe's men needed a reaction and got it when Wallace went over after good work by Jared Payne.
After some good continuity from Ulster Payne's flat pass created an overlap and quick hands saw Wallace go over on the right hand side.
O'Connor missed the chance to put the visitors in front with the conversion but after Matteo Pratichetti had been sent to the sin bin for failing to roll away, the Ulster fly-half made no mistake to put his side 20-18 up.
A man down and having just lost the lead it would have been easy for Zebre to roll over but another good restart for the home side allowed them to pile on the pressure in Ulster territory.
After Ulster scrum-half Michael Heaney was forced to carry the ball over his own line van Schalkwyk charged off the back of a retreating Zebre scrum and with no tackler in sight he strolled over for his second try. Halangahu's conversion made it 25-20 to the home side.
However the Ulster pack was dominant at the scrum and when they got a five-metre scrum with five minutes left they inevitably earned a penalty try as the Zebre eight buckled, O'Connor's conversion putting his side two points up.
Zebre threw everything they could at Ulster in the closing stages but struggled to get themselves in position for a late drop goal and penalty and eventually fell short.
|Zebre Score Card|
|Dries van Schalkwyk||2||10|
|Ulster Rugby Score Card|