Substitute Paulo Dybala netted the decisive goal for the hosts in the 77th minute.
Juve remain unbeaten in Serie A, while Milan have already lost seven times this season—only one fewer defeat than the entirety of last season—and won just once in their last five.
The first notable chance of the game fell to Juventus, when Gonzalo Higuain forced a save from Gianluigi Donnarumma after being slipped in by Cristiano Ronaldo.
Milan should have taken the lead, though, after a pair of dangerous crosses from Suso. Krzysztof Piatek could only head wide the former from just six yards out, while Wojciech Szczesny made a fine save to deny Lucas Paqueta's header.
Piatek had another promising chance at the end of the first half, but Szczesny was again on hand to deal with his strike:
ESPN FC's Andrew Cesare praised the Rossoneri's performance:
Blaise Matuidi came close to breaking the deadlock shortly after the break when he sent a curling effort narrowly wide, before Ronaldo was withdrawn after just 55 minutes having had a game to forget, per football writer Adam Digby:
Szczesny had to be alert to deny Piatek again after he was slipped through by Paqueta, while Matuidi had another chance to break the deadlock when he fired just over from the edge of the 18-yard box.
The breakthrough finally came when Dybala picked up the ball on the edge of the area and wriggled free from Milan's defence before firing low past Donnarumma:
Premier Sports 📺 @PremierSportsTV
🗣 "Here goes DYBALA! Juve find their hero!" ⚫⚪ He came off the bench to replace Cristiano Ronaldo, and now the Argentine has delivered a great goal to give Juve the lead 😍 A beautiful drag back inside with his left foot and the finish with the right https://t.co/Ifq2kykWF8
More heroics from Szczesny kept out Hakan Calhanoglu soon after, while at the other end Higuain and Dybala both came close to adding a second for the Bianconeri late on.