Canna breaks Dragons' hearts
Jared Rosser scored a hat-trick as the Dragons went in search of their first Pro14 away win since 2015, with the wing grabbing two in a superb first-half display.
He then completed his hat-trick before half time and Charlie Davies confirmed the bonus point on the brink of the interval.
However, Zebre came storming back with three quick-fire tries closing the gap to just two points – Tomasso Castello, Tommaso D’Apice and Johan Meyer all getting on the scoresheet.
An Arwel Robson penalty settled the Dragons' nerves but Canna converted his own try to win it for the Italians.
The Dragons remain winless in the league since the end of September but their two bonus points puts breathing space between them and the Southern Kings at the bottom of Conference B.
The hosts made a fine start as scrumhalf Marcello Violi crossed just six minutes into the match to finish off a stunning team move.
That settled the hosts down at the Stadio Fattori L’Aquila – the 44th venue to host a Pro14 match.
But the Dragons roared into life with Rosser in particular a major threat.
The wing got his first try just seven minutes after Violi's opener, strolling in unopposed to get them on the board.
It only got better from there as he got his second shortly after before latching onto the end of a superb grubber kick for his third.
When Davies crossed for Dragons' fourth on the strike of half time there only looked like being one winner but Zebre stormed back after the break.
Castello, D'Apice and Meyer all crossed to get them within two points but Robson's penalty settled Dragons' nerves.
However, Zebre were just too strong going forward and Canna snuck through to score before settling it with his conversion.
Tries: Violi, Canna, Castello, d'Apice, Meyer
Cons: Canna 3
Tries: Rosser 3, Davies
Cons: Robson 3
Pens: Robson 2
Zebre: 15 Matteo Minozzi, 14 Mattia Bellini, 13 Giulio Bisegni, 12 Tommaso Castello (captain), 11 Giovanbattista Venditti, 10 Carlo Canna, 9 Marcello Violi, 8 David Sisi, 7 Johan Meyer, 6 Jacopo Sarto, 5 George Biagi, 4 Leonard Krumov, 3 Eduardo Bello, 2 Luhandre Luus, 1 Andrea Lovotti.
Replacements: 16 Tommaso D’Apice, 17 Cruze Ah-Nau, 18 Roberto Tenga, 19 Valerio Bernabò, 20 Andrea De Marchi, 21 Guglielmo Palazzani, 22 Serafin Bordoli, 23 Gabriele Di Giulio.
Dragons: 15 Zane Kirchner, 14 Ashton Hewitt, 13 Sam Beard, 12 Connor Edwards, 11 Jared Rosser, 10 Arwel Robson, 9 Charlie Davies, 8 Lewis Evans 7 Aaron Wainwright, 6 Rynard Landman, 5 Cory Hill (captain), 4 Joe Davies, 3 Lloyd Fairbrother, 2 Elliot Dee, 1 Luke Garrett.
Replacements: 16 Liam Belcher, 17 Josh Reynolds, 18 Dan Suter, 19 Max Williams, 20 Taine Basham, 21 Owain Leonard, 22 Adam Warren, 23 Joe Goodchild.
Referee: George Clancy (Ireland)
Assistant referees: Nigel Correll (Ireland), Manuel Bottino (Italy)
TMO: Leo Colgan (Ireland)