Media playback is not supported on this device.
Ospreys fly-half Dan Biggar scored all the for the reigning Pro12 champions to deny Zebre a first competition win.
The Italian visitors led 8-6 at half-time after Alberto Chillon's try and penalty, with two Biggar penalties cutting the deficit.
Biggar matched Chillon with a converted try and another penalty after the break to give the home side breathing space.
Tito Tebaldi's try, converted by Daniel Halangahu, ensured a tense finale but the home side managed to hang on.
Tight-head prop Adam Jones led the Ospreys for the first time and Matthew Morgan, a fly-half, made his first appearance at full-back.
A ruck offence allowed Chillon to score the opening points with a penalty and he went over for the opening try after holes appeared in the home defence after 28 minutes.
Two Biggar penalties brought the hosts back into contention and visiting number eight Andries van Schalkwyk was sin-binned as the home side threatened a try from a forward drive.
Zebre led 8-6 at the break, but made five changes during half-time, including the entire front row and influential half-back Chillon.
Early in the second period, Biggar missed penalty attempt and amid their inability to get in front, there were loud cheers as Samoan scrum-half Kahn Fotuali'i took over from Rhys Webb after 54 minutes.
Biggar put his side ahead for the first time with his third penalty after 60 minutes and then finished off a fine attack for the Ospreys' only try.
Tebaldi slid over at the left corner for the visitors' second try and Halangahu's conversion brought them back to within a point.
Zebre's forwards came within a few metres of driving over after 78 minutes only to lose the ball in the shadow of the posts.
It left the Italian side to settle for their fifth losing bonus point of the season, while Ospreys will know that a much better performance will be needed against Leicester next Sunday when they hope to keep their Heineken Cup hopes alive.
Ospreys: Matthew Morgan; Ross Jones, Tom Isaacs, Jonathan Spratt, Eli Walker; Dan Biggar, Rhys Webb; Duncan Jones, Scott Baldwin, Adam Jones (capt), Ian Gough, Lloyd Peers, James King, Sam Lewis, Jonathan Thomas.
Replacements: Richard Fussell for Morgan (61), Kahn Fotuali'i for Webb (54), Ryan Bevington for D Jones (49), Richard Hibbard for Baldwin (66), Morgan Allen for Gough (49), George Stowers for Peers (68).
Not Used: Johnstone, John.
Zebre: Alberto Benettin; Giovanbattista Venditti, Roberto Quartaroli, Gonzalo Garcia (capt), Samuele Pace; Paolo Buso, Alberto Chillon; Andrea De Marchi, Davide Giazzon, David Ryan, Quintin Geldenhuys, Michael Van Vuren, Filippo Ferrarini, Nicola Belardo, Andries van Schalkwyk.
Replacements: Alberto Chiesa for Benettin (73), Daniel Halangahu for Quartaroli (41), Ruggero Trevisan for Buso (66), Tito Tebaldi for Chillon (41), Carlo Festuccia for De Marchi (41), Carlo Fazzari for Giazzon (41), Luciano Leibson for Ryan (41), Emiliano Caffini for Van Vuren (61).
Referee: Neil Paterson (SRU)
Assistant Referees: Neil Hennessy, Neil Perkins (both WRU)
Citing Commissioner: Russell Howell (WRU)