Inter Milan fell 11 points behind leaders Juventus following a shock 2-1 home loss to Bologna.
Antonio Conte's men took the lead after 22 minutes through Romelu Lukaku's 20th league goal of the season.
After a missed penalty from Inter's Lautaro Martinez in the 62nd minute, Musa Juwara equalised for the visitors on 74 minutes before Musa Barrow netted the winner six minutes later.
Both sides also finished the game with 10 men, as Alessandro Bastoni was given his marching orders on 77 minutes before Bologna had Roberto Soriano sent off 20 minutes earlier.
Napoli kept their top six ambitions alive after a vital 2-1 win over fifth-placed AS Roma on Sunday night.
Jose Callejon opened the scoring before Henrikh Mkhitaryan restored parity for the visitors.
The hosts had the final say though, as Lorenzo Insigne popped up with the winning goal with eight minutes left on the clock.
Atalanta extended their winning run to eight matches in the Italian top flight after their slim win away to Cagliari.
Lucas Muriel's 27th minute penalty did the job for the visitors, while Cagliari had Andre Carboni sent off in the first half.
Fiorentina secured a 2-1 away to Parma on Sunday evening, ending their five-match winless run in the league.
Eric Pulgar converted two penalties to cancel out Juraj Kucka's second-half strike.
Genoa rallied back from two goals down to secure a 2-2 draw at Udinese on Sunday evening.
Seko Fofana and Kevin Lasagna had Udinese two goals up with 27 minutes left in the clash, before Goran Pandev and a 97th minute strike from Andrea Pinamonti handed the visitors a point.
Brescia gave themselves an outside chance of surviving with a 2-0 success over Hellas Verona.
Goals from Andrea Papetti and Antonio Donnarumma secured the win for Brescia, who moved up to 19th spot.
SPAL dropped to the foot of the standings following a 3-0 beating at the hands of Sampdoria.
A brace from Karol Linetty and a solitary strike from Manolo Gabbiadini secured the spoils for Sampdoria, who moved up to 13th position.