Lazio took a huge step towards Champions League qualification by beating Juventus 2-1 in a frantic game at the Stadio Olimpico that was settled by a superb Mattia Zaccagni winner.

Sergej Milinkovic-Savic gave the hosts a deserved lead before the break, but it was quickly cancelled out by a bundled close-range finish from Adrien Rabiot.

Zaccagni restored Lazio’s advantage early in the second half, racing to meet a neat backheel assist from Luis Alberto and fire home his 10th Serie A goal of the season.

It was Lazio’s first win over Juve since December 2019 and extended their unbeaten run in Serie A to seven matches as they took advantage of slip-ups from top-four rivals AC Milan, Inter Milan and Atalanta.

The result puts Maurizio Sarri’s side in a commanding position in the six-way battle for three Champions League places, as they sit in second place, seven points clear of Inter Milan in fifth.

Lazio had the better of the first half as Milinkovic-Savic threatened three times early on before a Ciro Immobile volley required a sharp diving save from Wojciech Szczesny.

The hosts’ pressure eventually told when Zaccagni floated a ball to the back post, where Milinkovic-Savic controlled and finished after being left all alone when Alex Sandro fell to the floor claiming a foul. The officials weren’t interested in the Brazilian’s protests.

It was a deserved lead that the Biancocelesti had worked hard for, but they quickly let it slip as four minutes later Rabiot scrambled the ball over the line after Ivan Provedel parried a Gleison Bremer header from a corner, ending Lazio’s run of six clean sheets in a row.

Lazio were quickly back on the front foot after the break, though, and restored their advantage in style when Luis Alberto played Zaccagni into space with a deft flick and the winger finished calmly into the bottom corner.

Zaccagni added his second of the night soon after when he raced to meet a through ball and finish, but the goal was chalked off for offside.

Juventus pressed forward in search of an equaliser, with Federico Chiesa causing problems from the bench, but they struggled to carve out clear openings against Lazio’s watertight defence.