A brace from Robert Barbieri helped Treviso to a second consecutive win, and condemned Edinburgh to a third consecutive defeat.
Treviso made the trip to Scotland following a narrow victory over Scarlets, while the hosts were looking to stop the rot following defeats to Leinster and the Dragons.
An early Greig Laidlaw penalty gave Edinburgh the lead, but the 20 minutes that followed were nip and tuck, with neither side able to take the game by the scruff of the neck.
Treviso got their first points of the game and took the lead on the half hour when they were awarded a penalty try following a period of intense pressure.
The Italians' advantage didn't last long, however, and, when Tim Visser showed pace to beat his man before handing off the cover defender to cross for a converted try, Edinburgh held the lead.
The hosts looked likely to take their 10-7 advantage with them into the interval, but an Alberto di Bernardo penalty levelled the scores before Robert Barbieri capitalised on an Edinburgh mistake to cross for the visitors' second try, converted by di Bernardo, to snatch the lead.
Di Bernardo then put ten points between the sides five minutes into the second half with his second penalty of the evening, before Barbieri's second try on 55 minutes left the hosts with a mountain to climb, after an Edinburgh clearance kick was charged down.
The hosts needed to find an instant response and they got one when Lee Jones showed tremendous pace to round his man and cross for an unconverted try.
That score reduced Trevo's lead to 12, but, though Edinburgh rallied, they'd have to wait until the dying minutes to find their next points, as Doug Fife crossed.
But it was too little too late for the Scots, whose shaky run of form continues for another week.
Tries: Fife, Jones, Visser
Cons: Laidlaw 3
Tries: Barbieri 2, Penalty
Cons: di Bernardo 3
Pens: di Bernardo 2
Edinburgh: 15 Greig Tonks, 14 Lee Jones, 13 Matt Scott, 12 Ben Atiga, 11 Tim Visser, 10 Greig Laidlaw (c), 9 Chris Leck, 8 Dimitri Basilaia, 7 Roddy Grant, 6 David Denton, 5 Sean Cox, 4 Grant Gilchrist, 3 WP Nel, 2 Ross Ford, 1 Allan Jacobsen.
Replacements: 16 Andy Titterrell, 17 John Yapp, 18 Lewis Niven, 19 Netani Talei, 20 Ross Rennie, 21 Richie Rees, 22 John Houston, 23 Dougie Fife.
Treviso: 15 Luke McLean, 14 Tommaso Iannone, 13 Tommaso Benvenuti, 12 Alberto Sgarbi, 11 Tobias Botes, 10 Alberto Di Bernardo, 9 Fabio Semenzato, 8 Robert Barbieri, 7 Alessandro Zanni, 6 Simone Favaro, 5 Francesco Minto, 4 Antonio Pavanello (capt), 3 Lorenzo Cittadini, 2 Leonardo Ghiraldini, 1 Michele Rizzo.
Replacements: 16 Enrico Ceccato, 17 Alberto De Marchi, 18 Pedro Di Santo, 19 Valerio Bernaḅ, 20 Dean Budd, 21 Paul Derbyshire, 22 Kristopher Burton, 23 Giulio Toniolatti.
Referee: Matteo Liperini (Italy)