Weir boot seals Edinburgh victory
The Italians looked set for their third Pro14 win in a row when Marcello Violi scored a converted try and kicked a penalty.
That came after Stuart McInally scored a superb try for the Scottish side, but Zebre hit back to led by two points in the closing stages.
However, Weir broke their hearts to secure Edinburgh’s first win in three games.
The two sides arrived at Myreside in contrasting form with Edinburgh losing their previous three and Zebre seeking three wins in a row.
Blair Kinghorn and captain Magnus Bradbury returned for the hosts, while Zebre made just one change with Giovanbattista Venditti drafted in.
But it was Edinburgh that made the better start with fly-half Jason Tovey kicking an early penalty to settle their nerves.
The pace and energy of Edinburgh’s backline was too much for Zebre to handle at times but the Italian side managed to hold firm.
And they notched the first try of the match shortly after as Johan Meyer darted down the left and bundled his way over in the corner.
The Italian side enjoyed a five-minute period where they controlled possession and territory, but Edinburgh hit back in style as hooker McInally showed a surprising turn of speed to dart in for a memorable try from 50 metres, giving the hosts a half-time lead.
Tovey extended that after the break with a penalty as Edinburgh continued to apply pressure before Dougie Fife went close to a memorable score as he broke from inside his own half before losing control.
And shortly after the home crowd became nervy again as Violi charged down a Nathan Fowles kick and dived over for a simple score.
That swung the momentum back towards the visitors and Violi booted over a penalty to give the away side a slender two-point lead.
Edinburgh regrouped as the match threatened to slip away and Weir calmly put them back ahead with a penalty.
That proved to be decisive and the hosts held on to win.
Pens: Tovey, Weir 2
Edinburgh: 15 Blair Kinghorn, 14 Dougie Fife, 13 James Johnstone, 12 Phil Burleigh, 11 Tom Brown, 10 Jason Tovey, 9 Nathan Fowles, 8 Cornell du Preez, 7 Jamie Ritchie, 6 Magnus Bradbury (captain), 5 Grant Gilchrist, 4 Ben Toolis, 3 WP Nel, 2 Stuart McInally, 1 Darryl Marfo.
Replacements: 16 Ross Ford, 17 Allan Dell, 18 Simon Berghan, 19 Anton Bresler, 20 Luke Crosbie, 21 Sam Hidalgo-Clyne, 22 Duncan Weir, 23 Robbie Fruean.
Zebre: 15 Matteo Minozzi, 14 Mattia Bellini, 13 Tommaso Boni, 12 Tommaso Castello (captain), 11 Giovanbattista Venditti, 10 Carlo Canna, 9 Marcello Violi, 8 Renato Giammarioli, 7 Johan Meyer, 6 Giovanni Licata, 5 George Biagi, 4 David Sisi, 3 Dario Chistolini, 2 Oliviero Fabiani, 1 Andrea Lovotti.
Replacements: 16 Luhandre Luus, 17 Andrea De Marchi, 18 Eduardo Bello, 19 Leonard Krumow, 20 Derick Minnie, 21 Guglielmo Palazzani, 22 Serafin Bordoli, 23 Ciaran Gaffney.
Referee: Marius Mitrea (Italy)
Assistant referees: Andrea Piardi (Italy), Manuel Bottino (Italy)