Bottom of the table Genoa earned a shock 2-2 draw away to Atalanta, as the Orobici wasted the chance to take fourth place from Roma.
Bologna dominated the game with Brescia, yet had to fight back for a last-gasp 2-1 win with Riccardo Orsolini and Mattia Bani.
Cagliari twice fumbled the lead for a 2-2 draw with Parma, including a last-gasp Andreas Cornelius equaliser, and missed a penalty.
A couple of Cristiano Ronaldo penalties and Matthijs de Ligt header allowed Juventus to get the better of Fiorentina, although Wojciech Szczesny had some big saves too.
Ciro Immobile and Felipe Caicedo braces made short work of SPAL, while Bobby Adekanye got his debut Serie A goal for Lazio in a 5-1 victory.
Lecce celebrated their first Serie A home win of the season in style, thrashing Torino 4-0, with new buys Antonin Barak and Riccardo Saponara making an immediate impact.
Milan only managed a point against high-flying Hellas Verona, despite Sofyan Amrabat seeing red at San Siro, with both sides rattling the woodwork.
Sampdoria fought back from 2-0 down, but Napoli eventually ran out 4-2 winners at Marassi with Diego Demme and Dries Mertens.
Sassuolo put in a masterclass first half performance to lead 3-0 within 30 minutes, eventually beating Roma 4-2 in a chaotic thriller that also saw Lorenzo Pellegrini sent off.
Romelu Lukaku’s brace in a six-minute spell, including a penalty won by Alexis Sanchez, allowed a new-look Inter to conquer Udinese.