Kelly Brown was a first half try-scorer for Glasgow
Viadana (12) 15
Tries: Erasmus 2
Glasgow (10) 18
Tries: Brown, Stortoni
Pens: Parks 2
Glasgow kept their hopes of a first ever Heineken Cup quarter-final place alive with a battling victory in Italy.
Kelly Brown crashed over for a first half try as the hosts went into the break in front thanks to two touchdowns from Jaco Erasmus.
Glasgow battled back in the second period and Bernardo Stortoni claimed the visitors' second try.
Dan Parks slotted over the rest of Glasgow's points but Conradie Pilat's late penalty gave them a scare.
Sean Lineen's side have never reached the knockout phase of the tournament.
They will have a chance of progressing when they host Saracens in their final Pool Four match but that task has been made all the harder by their failure to claim a bonus point.
After a messy opening 20 minutes, the contest burst into life when Glasgow surged ahead with a superbly-worked try by breakaway forward Brown.
Colin Gregor made the telling thrust into the Viadana danger zone and after he was hauled down, the alert Parks launched a beautifully-weighted chip to the right flank.
Brown was lurking all on his own and after bouncing off the challenge of Kaine Robertson, he was left with a cruise to the line.
Parks followed up with the conversion but the Warriors' joy lasted a matter of seconds.
From the restart, Glasgow skipper Ally Kellock palmed back the ball in an uncontrolled manner.
And from the loose ball, the home brigade created the sequence which led to South African number eight Erasmus ploughing over.
Former Glasgow man Calvin Howarth slotted the goal from an awkward angle to tie the scores.
Erasmus then caught the Glasgow defence on the hop with a quick tapped kick before bullocking his way to the line.
The score was awarded by French referee Jerome Garces on the say-so of his video assistant.
Howarth was off-target with the conversion - and there was still enough time for Parks to steady the Warriors' nerves with a penalty.
Glasgow were next on the scoresheet with another penalty by Parks.
They were still toiling to find penetration in attack, however, and it was not until the start of the last quarter that they imposed their authority through a touchdown from full-back Stortoni.
Glasgow coach Sean Lineen:
"It was not a great game. They made it hard for us. We made it hard for us. The referee made it hard for us.
"Viadana were struggling in the contact phase but a weak referee let anything go. They were offside all the time, but we did not deal with that situation.
"I want to focus on the fact that we won - the first away success for Glasgow in 28 Heineken Cup games. They way we have been playing, I'll take the win."
Viadana: Stuart Moffat; Kaine Robertson (capt), Garry Law, Matthew Harvey, Hayden Pedersen; Calvin Howarth, Craig McGrath; Miguel Alonso, Luigi Ferraro, Ignacio Rouyet, Ockert Booyse, Quintin Geldenhuys, Joshua Sole, Aldo Birchall , Jaco Erasmus
Replacements: Andrea Moretti, André De Bonis, Cristian Bezzi, Sam Harding, Steven Bortolussi, Corrado Pilat, Hayden Reid
Glasgow Warriors: Bernardo Stortoni, Colin Shaw, Colin Gregor, Daryl Gibson, Thom Evans, Dan Parks, Sam Pinder, Kevin Tkachuk, Dougie Hall, Ed Kalman, Opeta Palepoi, Alastair Kellock (capt), Kelly Brown, John Barclay, Johnnie Beattie.
Replacements: Eric Milligan, Justin Va'a, Moray Low, Dan Turner, James Eddie, Scott Barrow, Hefin O'Hare