Steven Shingler's late penalty denied Zebre a losing bonus point as the Scarlets triumphed 20-12 in the PRO12 on Sunday.
Hadleigh Parkes and Aled Davies tries, allied by the accurate boot of Aled Thomas, gave the Welsh region a 17-0 lead at the interval.
A bonus-point victory looked on the cards, but the Italian outfit gave themselves an opportunity of producing an outstanding recovery through two Dries van Schalkwyk scores.
However, Steven Shingler's penalty ended Zebre's chances of snatching the win and also took away the losing bonus point.
Wayne Pivac's men have enjoyed an excellent start to the season and they opened this match with intent.
In horrific conditions, they managed to fashion two tries in the opening 12 minutes with Zebre mistakes contributing to both scores.
For the first, the visitors failed to deal with a high kick – a theme prevalent throughout the opening period – and Parkes was on hand to touch down.
The centre was involved with the second as well when he spotted a hole in the opposition defensive line. Parkes duly powered through the gap and passed to Davies who scampered across the whitewash. Thomas was successful with both conversion attempts and then added a penalty as the hosts moved into a 17-0 advantage at the break.
Despite a disappointing first half, the away side controlled the initial stages of the second 40 minutes and reduced the arrears through Van Schalkwyk.
They pressed for another and appeared to have touched down again. Although it was ruled out, Scarlets' lock Maselino Paulino was sin-binned for a cynical infringement.
Down to 14 men, the hosts failed to cope with the pressure and the Italian team's number eight went over for his second try.
Zebre were now within losing bonus point territory and they went in search of the winning score, but Shingler's three-pointer secured the win for the Welsh region.
Tries: Parkes, A Davies
Cons: A Thomas 2
Pens: A Thomas, Shingler
Yellow Card: Paulino
Tries: Van Schalkwyk 2
Scarlets: 15 Steffan Evans, 14 Tom Williams, 13 Regan King, 12 Hadleigh Parkes, 11 DTH van der Merwe, 10 Aled Thomas, 9 Aled Davies, 8 John Barclay (c) 7 James Davies, 6 Aaron Shingler, 5 Lewis Rawlins, 4 Maselino Paulino, 3 Samson Lee, 2 Emyr Phillips, 1 Rob Evans,
Replacements: 16 Kirby Myhill, 17 Dylan Evans, 18 Rhodri Jones, 19 George Earle, 20 Jack Condy, 21 Rhodri Williams, 22 Steve Shingler, 23 Gareth Owen.
Zebre: 15 Guglielmo Palazzani, 14 Dion Berryman, 13 Giulio Bisegni, 12 Matteo Pratichetti, 11 Kayle Van Zyl, 10 Carlo Canna, 9 Luke Burgess, 8 Andries Van Schalkwyk, 7 Paul Derbyshire, 6 Jacopo Sarto, 5 George Biagi (c), 4 Valerio Bernabò, 3 Pietro Ceccarelli, 2 Andrea Manici, 1 Andrea Lovotti.
Replacements: 16 Oliviero Fabiani, 17 Andrea De Marchi, 18 Guillermo Roan, 19 Marco Bortolami, 20 Federico Ruzza, 21 Filippo Ferrarini, 22 Tommaso Boni, 23 Edoardo Padovani.
Referee: George Clancy
Assistant Referees: Ben Whitehouse, Craig Evans
TMO: Jon Mason