Munster denied Zebre a first ever Pro12 win thanks to an impressive second-half comeback in Italy.
Zebre went in at half-time 18-9 ahead after tries from Luciano Orquera and Andrea Manici.
Paddy Butler scored Munster's opening try early in the second half and the Irish side surged clear after two CJ Stander tries.
Replacement fly-half Ian Keatley converted his own try to secure a bonus point and round off Munster's win.
Two JJ Hanrahan penalties had given Munster an early lead but Orquera halved the deficit and then crossed for the opening try after catching Munster off guard with a quick tap-penalty.
Hanrahan brought his side back within a point but hooker Manici surprisingly popped up on the end of a flowing move and outpaced Munster full-back Denis Hurley to score.
Half-time substitute James Downey quickly won a penalty from which Hanrahan cut the deficit and it sparked a dramatic fightback.
Butler's try and Hanrahan's conversion put Munster 19-18 up, and two barnstorming runs through the defence from Stander proved decisive.
Filippo Ferrarini wasted a three-on-one chance to bring Zebre back into the game before Keatley converted his own try.
Zebre: Trevisan, Sarto, Ratuvou, Garcia, Venditti, Orquera, Leonard, Perugini, Manici, Redolfini, Q. Geldenhuys, Bortolami, Ferrarini, van Schalkwyk, Vunisa.
Replacements: Berryman for Trevisan (68), Iannone for Garcia (60), Aguero for Perugini (49), Giazzon for De Marchi (60), Chistolini for Redolfini (49), Biagi for Bortolami (68).
Not Used: Cristiano, Chillon
Sin Bin: Ratuvou (31), Berryman (72)
Munster: Hurley, Conway, Laulala, J. Murphy, Dineen, Hanrahan, Sheridan, Kilcoyne, Varley, J. Ryan, D. Ryan, Nagle, Stander, O'Donnell, Butler.
Replacements: Downey for Conway (37), Williams for Sheridan (71), Cronin for Kilcoyne (68), Sherry for Varley (61), Archer for J. Ryan (64), Keatley for Nagle (31), Ronan for O'Donnell (67).
Not Used: D Foley
Ref: Andrew McMenemy (RFU)