Manuel Lazzari put through his own goal before Adrien Tameze pounced on Stefano Radu's poor back pass to give Verona their first win at Lazio for 36 years. Felipe Caicedo replied for Lazio, who have managed only one win in six home games.
The win took Verona up to sixth place with 19 points, overtaking Lazio who are eighth with 17. None of Verona's players were born when Verona last beat Lazio away, winning 1-0 in December 1984.
Lazio, who on Tuesday reached the last 16 of the Champions League for the first time in more than 20 years, had the first real chance but Ciro Immobile, who had scored in their previous nine games in all competitions, fired wide.
Already missing playmaker Luis Alberto, the hosts ran into trouble after Francesco Acerbi, the linchpin of their defence, limped off in the 28th minute.
Nightmare for Real and Barca as Mbappe and Neymar to stay at PSG - Euro Papers
One minute before halftime, Verona fullback Federico Dimarco volleyed wide but the ball hit Lazzari and flew into the net.
Lazio hit back with a superb equaliser from Caicedo, who scored with a shot on the turn in the 56th minute, but they were undone by more poor defending 11 minutes later.
Radu's attempted back pass was intercepted by Tameze who rounded Pepe Reina to score and the Romanian's complaints that he had been fouled as he played the ball fell on deaf ears.
Verona, who have the second-best defensive record with only nine goals conceded, had to survive a late siege and goalkeeper Marco Silvestri made a brilliant save with his outstretched foot to block Andreas Pereira's deflected shot in stoppage time. (