Goals from Mario Mandzukic and Cristiano Ronaldo gave Juventus a 2-0 win at AC Milan to go five points clear at the top of Serie A.
Mandzukic's header from an Alex Sandro cross got the league champions up and running inside eight minutes, although they owed their half-time lead as much to goalkeeper Wojciech Szczesny, who kept out a penalty from Gonzalo Higuain shortly before the interval.
Milan rarely threatened in the second half despite plenty of attacking pressure, and Juventus instead took a two-goal lead when Ronaldo turned in the rebound from Joao Cancelo's shot with nine minutes to play.
A bad night for the hosts got worse when Higuain was booked twice within 30 seconds for protesting a foul he had given away on Medhi Benatia, and the Argentine striker had to be ushered from the pitch after remonstrating with a number of his former team-mates.
AC Milan: G Donarumma (6), Abate (5), Zapata (7), Romagnoli (5), Rodriguez (6), Suso (6), Kessie (7), Bakayoko (5), Calhanoglu (5), Samu (5), Higuain (4).
Subs: Cutrone (6), Borini (5), Laxalt (6).
Juventus: Szczesny (7), Cancelo (5), Benatia (8), Chiellini (7), Sandro (7), Matuidi (6), Pjanic (7), Bentancur (6), Dybala (7), Ronaldo (7), Mandzukic (7).
Subs: Khedira (7), Costa (6).
Man of the match: Medhi Benatia
Juventus had won 10 out of the previous 11 league meetings between the two sides and looked like that run may be extended almost from kick-off, with Paulo Dybala catching Thimoue Bakayoko in possession inside 90 seconds, and only a good tackle from Alessio Romagnoli stopping his charge into the box.
That became even more likely when Sandro was given room to cross by Ignazio Abate and Suso with eight minutes gone, and his pinpoint delivery to the back post was headed home by Mandzukic.
The goal set up Juventus to control the half, and they did to good effect. Milan attempted to catch them on the break only to let themselves down with sloppy passing, but they were given a lifeline back into the game four minutes before the break.
Suso's ball into Higuain was chipped up by the Argentine striker onto Mehdi Benatia's hand, and after initially waving play on referee Paolo Mazonelli used VAR to review the decision, and gave a penalty.
Higuain scuffed the ball to Szczesny's right, but the Polish goalkeeper's save to tip it onto the post was still superb, and Juventus went in ahead at the break.
A patched-up Milan side made two changes from last weekend's win at Udinese. Samu Castillejo replaced Patrick Cutrone, and Hakan Calhanoglu also took Diego Laxalt's place.
Leonardo Bonucci told Italian media he was surprised to be left out of the Juventus line-up, with Mehdi Benatia selected ahead of him. Among four changes, Juan Cuadrado also missed out on the squad with Mario Mandzukic recalled.
After half-time Milan stepped up their intensity, but still could not find a way through - with Benatia in particular proving a rock at the back for Juventus.
They nearly extended their lead, instead, with Ronaldo twice leaving Donnarumma stretching, and Dybala striking a post with a brilliant free-kick.
With nine minutes to go, they did wrap up victory, as Ronaldo pounced when Cancelo's powerful drive from wide was palmed back into the middle by Donnarumma.
Worse was to come for Milan as Higuain innocuously fouled Benatia on the half-way line and was shown a red card for shouting at referee Mazonelli, before having to be restrained by his team-mates and finally making his way off.
While Juventus ride high at the top of Serie A courtesy of an 11th win from 12 games, Milan are fifth, having missed the opportunity to leapfrog Lazio into the Champions League qualifying places.
Man of the match - Medhi Benatia
Despite giving away a penalty in the first half, Benatia showed time and time again why Massimiliano Allegri was right to choose him over Leonardo Bonucci, repeatedly thwarting home attacks with well-timed tackles, blocks or interceptions.
He made a crucial block on a fizzing Higuain drive before half-time, and kept the Argentian striker quiet throughout the game.
Both sides have a two-week break with the international fortnight coming up. After that, Milan will have another go at jumping into the Champions League positions when they travel to Rome to face Lazio on November 25, and a day beforehand Juventus host relegation-threatened SPAL.