Flanker Tyler Ardron and prop Duncan Jones crossed for tries as the Ospreys are made to battle all the way for this win over Zebre.
Fly-half Matthew Morgan scored 20 points to put the Ospreys top of the Pro12 for at least a couple of hours.
The Welsh side have to wait and see how Munster fare against the Cardiff Blues later this evening to see if they stay top.
Flanker Filippo Cristiano and number eight Samuela Vunisa scored for Zebre.
The Ospreys, having lost six of their last seven matches in all competitions, were forced to come from behind in the first half at the Liberty Stadium.
The Welsh had second-half tries from Canadian flanker Aldron and veteran prop Jones - his first score for four years - to thank for this win.
Zebre, who had beaten the Blues 30-25 and drawn with the Scarlets already this season, made the home side fight all the way for the points.
The Ospreys had been boosted by the return of wing Hanno Dirksen, making his first Pro12 start since undergoing knee surgery in November 2012.
Zebre scored the only try of the first half through flanker Cristiano but still trailed 15-13 at the interval to five Morgan penalties.
After half-time the Ospreys went a long way to sealing their win with two tries in four minutes.
The first was a well-worked move started by some good link work between full-back Richard Fussell and Dirksen before scrum-half Tito Tebaldi's long pass put Aldron over.
Jones' try - only his fourth in 196 Ospreys appearances - after some good build-up work by centre Ben John.
Zebre responded with a try for Vunisa, but his sin-binning for a professional foul on the 69th minute ended any hopes the Italian side may have had of a comeback.
Ospreys: Richard Fussell, Hanno Dirksen, Jonathan Spratt (c), Ben John, Jeff Hassler, Matthew Morgan, Tito Tebaldi; Duncan Jones, Scott Baldwin, Aaron Jarvis, Lloyd Peers, James King, Tyler Ardron, Sam Lewis, Joe Bearman
Replacements: Matthew Dwyer, Marc Thomas, Dan Suter, Graham Knoop, Arthur Ellis, Rhys Webb, Sam Davies, Tom Issacs
Zebre: Dion Berryman, David Odiete, Roberto Quartaroli, Gonzalo Garcia (c), Giulio Toniolatti, Paolo Buso, Brendon Leonard; Salvatore Perugini, Andrea Mancini, David Ryan, Augustin Cavalieri, Michael Van Vuren, Filippo Cristiano, Andries Van Schalkwyk,Samuela Vunisa,
Replacements: Tommaso D'Apice, Andrea De Marchi, Luciano Leibson, Emiliano Caffini, Nicola Cattina, Guglielmo Palazzani, Alberto Chillon, Enrico Ceccato
Referee: Leo Colgan (IRFU)
Assistant Referees: Martyn Lewis, Craig Evans (both WRU)
Citing Commissioner: Gwyn Bowden (WRU)