Mattia Zaccagni scored what was to prove the winner early in the second half of Saturday's match in Rome, after Adrien Rabiot cancelled out Sergej Milinković-Savić's controversial opener.
Lazio moved five points clear of third-placed Roma, who won at Torino 1-0. Lazio were six points ahead of AC Milan and seven ahead of fifth-placed Inter Milan after they dropped points on Friday.
Juventus – hit by a 15-point penalty in January – were seventh, eight points below Milan.
Lazio broke the deadlock in the 38th minute when Milinković-Savić chested down a pass from Zaccagni and fired into the back of the net.
There were lengthy Juventus protests as Milinković-Savić had one hand on Alex Sandro's back as they went for the ball and the defender went sprawling. But the goal was given after a check by the VAR.
Juventus levelled just four minutes later. A corner was floated in and Ivan Provedel parried Bremer's header, but Rabiot turned home the rebound at the third try after the Lazio goalkeeper kept out the first two attempts.
Lazio restored their advantage eight minutes into the second half. Luis Alberto flicked on Felipe Anderson's cross with a backheel for Zaccagni to sweep across into the bottom right corner.
AAP