Benevento proved why they are at the foot of the table, as they dominated for 90 minutes and still lost 2-1 to Cagliari.
Roma continued their strong run of form with a hard-fought victory at Crotone thanks to Stephan El Shaarawy and Radja Nainggolan.
Lucas Leiva cancelled out an early Bologna goal, but Lazio were unable to completely recover from that Simone Verdi opener.
It was a five-goal thriller at San Siro, as Milan went in front, fell behind to Chievo, turned it around again to win 3-2 and saw a penalty saved.
Napoli closed the gap at the top of the table to just two points, as Raul Albiol's first goal in two years eventually saw off Genoa.
Mauro Icardi broke his goal drought in spectacular style, netting four goals – including a 14-minute hat-trick – as Inter crushed Sampdoria 5-0.
Leaders Juventus saw their run of 12 consecutive Serie A victories grind to a halt, as SPAL more than earned their stalemate.
VAR was the star of the show, as Fiorentina had one penalty saved and converted another to inflict Torino’s third straight defeat.
Sassuolo ended their nightmare run and intensified Udinese’s problems with a 2-1 away victory, sealed by Stefano Sensi.
Atalanta put a firm end to Verona’s revival hopes with a 5-0 mauling at the Bentegodi, with Josip Ilicic bagging a hat-trick.