Zebre went in at half-time 18-9 ahead after tries from Luciano Orquera and Andrea De Marchi but tries Paddy Butler, Denis Hurley, CJ Stander and Ian Keatley helped Munster to the win.
Two JJ Hanrahan penalties gave 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 to within a point but hooker De Marchi surprisingly popped up on the end of a flowing move and outpaced Munster full-back Hurley to score.
Half-time substitute James Downey quickly won a penalty from which Hanrahan cut the deficit and it sparked a dramatic second-half comeback.
Butler's try and Hanrahan's conversion put Munster 19-18 up, before Stander's try extended their cushion.
Filippo Ferrarini wasted a three-on-one chance to bring Zebre back into the game and replacement fly-half Keatley converted his own try to round off Munster's win