Zebre claimed their first Pro14 win of the season at the fourth time of asking as they held off an under-strength Ospreys side in Italy.
Fly-half Antonio Rizzi was the home side's architect with a try, three penalties and two conversions.
Renato Giammarioli scored the first try as the Italians bossed the first half.
Ospreys fought back with converted tries from Gareth Thomas and Olly Cracknell, but the boot of Rizzi saw Zebre over the finish line.
Zebre remain bottom of Conference A but are now just a point behind Dragons, while Ospreys stay third despite a won two, lost two record.
Ospreys arrived in Italy minus three unnamed players because of Covid-19 guidelines.
Head coach Toby Booth made three changes to the matchday squad that defeated Glasgow 23-15, with Stephen Myler, Kieran Williams and Tiaan Thomas-Wheeler not included.
That saw centre Joe Hawkins make his debut in place of Williams while 20-year-old Josh Thomas started at fly-half in Myler's absence.
Rizzi opened the scoring for Zebre with a penalty before flanker Giammarioli stormed down the left flank for a try near the corner.
Fly-half Rizzi converted to make it 10-0 with just over a quarter of an hour on the clock at the Stadio Sergio Lanfranchi.
Rizzi in control
Continued Italian pressure kept Ospreys pinned in their own half and when the Welsh ran out of defenders, Rizzi picked up from a ruck to dart over on the blindside - brushing through Cai Evans, an early replacement for full-back Dan Evans - and converted his own try.
Back-row Sam Cross came off the bench to make his 50th Ospreys appearance, before Thomas relieved the one-way traffic with a penalty to get the visitors on the scoreboard.
Rizzi had the chance to restore Zebre's lead, but his penalty skipped off the far left-hand post to leave it 17-3 at half-time, although the fly-half did better soon after the restart to notch his second penalty.
Ospreys were much-improved after the break though and at last managed to build pressure on the Zebre line, with replacement prop Gareth Thomas bulldozing over for a close-range try converted by namesake Josh.
A third Rizzi penalty stretched Zebre away again, before Ospreys had a Matt Protheroe effort ruled out for a marginal forward pass decision.
Ospreys had a penalty advantage though and stayed patient, with Olly Cracknell scoring a converted try.
That set up a grandstand finish as Ospreys looked for another score to pinch victory, but ultimately had to settle for a losing bonus point.
Zebre: Junior Laloifi; Pierre Bruno, Giulio Bisegni, Tommaso Boni (capt), Giovanni D'Onofrio; Antonio Rizzi, Joshua Renton; Paolo Buonfiglio, Marco Manfredi, Eduardo Bello, Samuele Ortis, Ian Nagle, Lorenzo Masselli, Renato Giammarioli, Giovanni Licata.
Replacements: Oliviero Fabiani, Andrea Lovotti, Matteo Nocera, Leonard Krumov, Antoine Koffi, Nicolo Casilio, Paolo Pescetto, Michelangelo Biondelli.
Ospreys: Dan Evans; Matt Protheroe, Scott Williams, Joe Hawkins, Luke Morgan; Josh Thomas, Reuben Morgan-Williams; Rhodri Jones, Dewi Lake, Ma'afu Fia, Adam Beard, Bradley Davies, Olly Cracknell, Dan Lydiate (capt), James King.
Replacements: Ifan Phillips, Gareth Thomas, Tom Botha, Will Griffiths, Sam Cross, Harri Morgan, Cai Evans, Callum Carson.
Referee: Frank Murphy (IRFU)
Assistant Referees: Gianluca Gnecchi, Riccardo Angelucci (both FIR)
TMO: Stefano Penne (FIR)