Glasgow Warriors (10) 25
Tries: Welsh, Murchie, Dunbar Cons: Weir 2 Pens: Weir 2
Benetton Treviso (10) 17
Tries: Rizzo, Nitoglia Cons: de Waal 2 Pen: de Waal
Dunbar scored in the corner for Glasgow at Firhill
Glasgow claimed their first Magners League win in seven games after an exciting, incident-packed tussle but remain second-bottom of the standings.
Treviso held a 10-0 lead, but the Warriors deserved their victory.
Fit-again prop Jon Welsh, centre Peter Murchie and wing Alex Dunbar scored the tries, with the boot of fly-half Duncan Weir adding the extras.
Treviso's tries came from Michele Rizzo and Ludovico Nitoglia, with Willem de Waal kicking their other points.
Glasgow, who were missing 17 players - six on international duty and 11 injured, made a bright start but were unable to capitalise.
Centres Federico Aramburu and Murchie on occasion put the visitors' defence under pressure, but nothing came of it.
Treviso, themselves missing 10 men on Six Nations duty, scored with their first chance after 13 minutes.
Flanker Gonzalo Padro was released on a 20-metre run deep into Glasgow's 22, from where the ball was moved right and prop Rizzo slipped over from seven metres and De Waal converted from far out.
Glasgow's discipline at the set-piece then slipped. Treviso stuck a penalty into the home 22, where Glasgow gave away a free-kick followed by a penalty that De Waal kicked to give the Italians a 10-0 lead after 23 minutes.
Glasgow were forced into a change 11 minutes later when lock Tom Ryder limped off and the appearance of sub James Eddie brought a change of Glasgow's fortunes.
He immediately hustled De Waal into an error and, from the possession, Eddie was driven over but unable to ground the ball. However, following the scrum, Weir kicked a penalty.
Eddie, along with Johnnie Beattie and Ryan Wilson, were very much involved as Glasgow finished the half in a very different gear that was rewarded right on the half-time whistle with Welsh scoring and Weir converting to send the teams in level at 10-10.
Glasgow began the second half where they left off and looked well on their way to a bonus-point win with two tries in the first five minutes, the first coming from Murchie with Weir converting.
Then high-tempo play saw Weir put in left wing Dunbar for an unconverted try.
Glasgow were now motoring but were brought down to earth in the 49th minute when a move broke down deep in the Treviso 22, from where the visitors broke upfield and Nitoglia touched down for De Waal to convert and cut the deficit to five points.
The Warriors could not get the bonus-point try, hooker Fergus Thomson coming closest, but a Weir penalty seven minutes from time extended their final lead to eight points.
Glasgow Warriors: Stortoni, O'Hare, Aramburu, Murchie, Dunbar, Weir, Gregor, Welsh, Thomson, Low, Muldowney, Ryder, Harley, Wilson, Beattie.
Replacements: Horne for Aramburu (66), Grant for Welsh (57), MacArthur for Thomson (62), Tkachuk for Low (68), Eddie for Ryder (44). Not Used: Fusaro, Pyrgos, McCall. Benetton
Benetton Treviso: Williams, Sepe, Nitoglia, Pratichetti, De Jager, de Waal, Botes, Rizzo, Sbaraglini, Di Santo, A. Pavanello, van Zyl, Vermaak, Padro, Filippucci, Vosawai.
Replacements: Galon for De Jager (51), Muccignat for Rizzo (66), Cittadini for Di Santo (68), E. Pavanello for A. Pavanello (47), Vosawai for Filippucci (47), Picone for Vosawai (51). Not Used: Ceccato, Marcato.