Treviso took a 10-3 lead into the final 15 minutes, courtesy of a converted Michele Campagnaro try and a penalty from Jayden Hayward, before bursts from both Italian sides created a frenetic finale.
Zebre, who were only on the board thanks to Edward Padovani's first-half penalty, finally showed some signs of life as lock Quintin Geldenhuys dotted down with 10 minutes left, but crucially the conversion to level up the scores was missed.
Edoardo Gori struck back almost immediately for the hosts, with Hayward adding the extras to rubber stamp the win, despite Brendon Leonard crossing over for Zebre in the dying moments.
This time substitute Kelly Haimona was able to add the conversion for the visitors, but it was too little too late.
The last-minute surge was not enough to turn the game around but it did at least give rock-bottom Zebre a bonus point to show for their efforts, although they do drop to the foot of the table with Treviso moving two points ahead of them.