Kristopher Burton's eighteen-point tally helped Treviso make it three wins in a row for the first time in the RaboDirect Pro12 competition, after beating Ulster 23-12 on Friday.
Ulster were looking to regain some form after two defeats in a row, whereas the Italians were aiming for their third win on the bounce.
Burton's opening penalty gave the visitors the lead after six minutes. Treviso's simple but effective game-plan of forward runners had the hosts firmly on the back foot.
On the half-hour mark, Treviso full-back Brendan Williams lit up the evening when he was just inches away from a brilliant individual try. Darren Cave's sensational try-saving tackle preventing a possible early candidate for try of the season.
Improper binding by Declan Fitzpatrick led to the loosehead being sin-binned after nearly five minutes of scrum pressure from the visiting pack. The following scrum left referee Stefano Penne with no choice but to award a penalty try.
Burton added the extras to make it 10-0 at half-time.
Anogther Burton penalty on the hour mark gave Treviso a 13-0 lead.
Burton then snaffled up a loose kick by Adam D'Arcy to run the length of the field to score and converted his own try to make it 20-0.
Ulster staged a mini-comeback when South African flanker Pedrie Wanneburg crashed over for a much-needed try to make it 20-7.
Wanneburg went over for his second try with just 10 minutes remaining to raise the hopes of the home supporters.
But a 77th-minute Burton penalty quashed all Ulster optimism that they could stage a remarkable comeback.
The 23-12 final score gave Treviso only their second win ever away from home in the competition, and also ended Ulster's impressive nine-game winning run at home in all competitions.
Ulster: 15 Jared Payne, 14 Craig Gilroy, 13 Darren Cave, 12 Nevin Spence, 11 Ian Whitten, 10 Ian Humphreys, 9 Paul Marshall, 8 Chris Henry, 7 Mike McComish, 6 Pedrie Wannenburg, 5 Dan Tuohy, 4 Tim Barker , 3 Jerry Cronin, 2 Andi Kyriacou, 1 Declan Fitzpatrick.
Replacements: 16 Nigel Brady, 17 Kyle McCall, 18 Adam Macklin, 19 Lewis Stevenson, 20 Robbie Diack, 21 Ian Porter, 22 Paddy Jackson, 23 Adam D'Arcy.
Treviso: 15 Ludovico Nitoglia, 14 Tommaso Iannone, 13 Ezio Galon, 12 Luca Morisi, 11 Brendan Williams, 10 Kristopher Burton, 9 Tobias Botes, 8 Marco Filippucci, 7 Benjamin Vermaak, 6 Francesco Minto, 5 Valerio Bernaḅ, 4 Antonio Pavanello (c), 3 Lorenzo Cittadini, 2 Enrico Ceccato, 1 Michele Rizzo.
Replacements: 16 Diego Vidal, 17 Matteo Muccignat, 18 Carlo Fazzari, 19 Gonzalo Padṛ, 20 Manoa Vosawai, 21 Willem De Waal, 22 Alberto Sgarbi, 23 Simon Picone.
Referee: Stefano Penne (FIR)