Juve defender Leonardo Bonucci headed in ex-Milan playmaker Andrea Pirlo's corner after 56 minutes and Fabio Quagliarella netted an angled drive to put the Turin side a point ahead of the champions with seven games left.
"We need to remain focused and aggressive until the end," Juve boss Antonio Conte told reporters. "But we aren't at the beginning of the season, we've acquired a new character and awareness."
Milan meekly surrendered top spot after a late goal by Fiorentina substitute Amauri, who flopped at Juve during their wilderness years after a 2006 match-fixing demotion, gave the lowly outfit the points at a scorching San Siro.
The Rossoneri fell apart having gone ahead through Zlatan Ibrahimovic's 31st-minute penalty after a foul on strike partner Maxi Lopez, who later hit the post.
Milan, who drew at Catania last weekend and were eliminated from the Champions League by Barcelona in midweek, were pegged back by Stevan Jovetic's goal on the break in the 47th and a Philippe Mexes mistake let Amauri net the 89th-minute winner.
Not even the late substitute appearance of Antonio Cassano, out for five months after a heart problem, could inspire Milan.
"We'll have to react with the personality of a great team because nothing is lost," Milan coach Massimiliano Allegri said.
"It was a difficult game because of fatigue, the state of the pitch and because Fiorentina did well. It's the first time we've played in the afternoon for a long time, it was quite hot today as well and the ball on the pitch was like a boulder."
Lazio consolidated third place and the Champions League qualifying round berth after Stefano Mauri's stupendous strike helped seal a 3-1 home win over Napoli as the hosts mourned the recent passing of former striker Giorgio Chinaglia.
Antonio Candreva gave Lazio an early lead against coach Edy Reja's former club but Goran Pandev netted on 34 minutes. The Romans then took charge in the second half through Mauri's magic and a Cristian Ledesma penalty.
Udinese are three points behind in fourth after a 3-1 win over Parma while Napoli, in fifth, lie six adrift of Lazio.
Sixth-placed AS Roma suffered a major blow in the race for the Champions League spot when they lost 4-2 at third-bottom Lecce for whom Luis Muriel and David Di Michele scored twice.
Inter Milan's slim hopes of third were hit by a 2-2 draw with Cagliari in Andrea Stramaccioni's second game in charge.
The match was played in the north-eastern city of Trieste because of problems with the Sardinians' stadium but Cagliari still felt at home and went ahead after five minutes through Davide Astori.
Inter's Diego Milito replied immediately only for Mauricio Pinilla to put the hosts back on top just past the hour before being sent off for a second booking after excessive celebrating.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.