Byron McGuigan ran in two tries as Glasgow Warriors maintained their 100% winning record this season at Zebre.
The winger finished off a neat passing sequence as the Pro12 leaders dominated the first half.
And he nipped in at the corner again after hooker Dougie Hall had bundled over early in the second period.
Zebre enjoyed good field position for most of the second half but could not profit until Samuela Vunisa and Leonardo Sarto produced late tries.
Glasgow top the table with four victories but will be disappointed not to have secured a bonus point, and to have conceded their first touchdowns of the campaign.
Zebre stunned Cardiff Blues 30-25 last weekend to record their first win since coming into existence last season.
And they gave Gregor Townsend's men a real scare, with the visitors hanging on at the end as their play grew increasingly ragged.
Such a finale had looked unlikely as the Warriors were in complete control with a 24-3 lead after an hour.
A careless fumble from fly-half Luciano Orquera presented Glasgow with an early scrum put-in on the Zebre 22 but referee Dudley Philips ruled against the visitors at the contact.
A squint feed from a scrummage then gave Glasgow another opportunity to apply pressure from similar range. Scrum-half Henry Pyrgos broke on the blindside but hesitated on his charge to the line and lacked support.
With 24 minutes gone, more Warriors pressure brought the visitors to within a few feet of the line but Pyrgos let the ball slip from his grasp on his way down, while Alex Dunbar knocked-on under little pressure.
However, the home side were penalised for offside and Pyrgos slotted between the posts from close range.
Soon after, the lead was extended when a clever inside pass from Gabriel Ascarate sent full-back Sean Maitland flying forward and McGuigan finished off a fine flowing move on the left wing, with Pyrgos adding the extras.
Orquera reduced the deficit with a penalty but Zebre's hopes of gaining momentum were dashed when prop Salvatore Perugini was sent to the sin bin for cynically holding on at a tackle.
Pyrgos was wide with the resulting penalty and the first half ended with Orquera also missing the posts from distance.
The hosts were still a man down when the second half started and Glasgow took advantage with a swift score, Tommy Seymour slicing through the home ranks before the ball was worked out wide on the left for Hall to crash over.
Pyrgos then landed a wonderful in-swinging conversion from the touchline.
With Perugini back on, Zebre launched a spirited assault deep in Glasgow territory but their attempts to batter a way through were repelled.
Having absorbed that spell of pressure, the visitors countered with precision as McGuigan ran on to a grubber-kick from Maitland to score in the corner and Pyrgos again split the posts from a difficult angle.
Teenage lock Jonny Gray replaced skipper Al Kellock on 58 minutes and was shown a yellow card for an infringement at a line-out 11 minutes later.
There was a let-off for Glasgow when the Television Match Official gave an inconclusive verdict when Tommaso d'Apice burrowed towards the line.
But the visiting defence was breached for the first time this season when Samuela Vunisa spun through a tackle and was too strong for last-man Pyrgos.
And Leonardo Sarto added another score soon after, finishing off a neat passing move as Vunisa applied the telling offload.
Orquera converted both scores but time ran out for battling Zebre.
Zebre: Trevisan, Odiete, Ratuvou, Pratichetti, Sarto, Orquera, B. Leonard, Perugini, Manici, Chistolini, Biagi, Bortolami, Bergamasco, van Schalkwyk, Vunisa.
Replacements: Venditti for Odiete (44), Lannone for Pratichetti (45), Chillon for B. Leonard (71), Aguero for Perugini (47), D'Apice for Manici (47), Caffini for Biagi (69), Cristiano for Bergamasco (69). Not Used: Redolfini.
Sin Bin: Perugini (33).
Glasgow Warriors: Maitland, Seymour, Ascarate, Dunbar, McGuigan, Jackson, Pyrgos, Reid, Hall, Welsh, Harley, Kellock, Eddie, Fusaro, Strauss.
Replacements: Wight for Maitland (74), Matawalu for Seymour (57), Yanuyanutawa for Reid (49), Brown for Hall (58), Low for Welsh (49), Holmes for Harley (58), Gray for Kellock (57). Not Used: Vernon.
Sin Bin: Gray (69).
Ref: Dudley Phillips