Palermo beat Juventus to leapfrog them into fourth place while Inter Milan remain four points clear at the top of Serie A.
Juve were hoping for a third straight win as they hosted Palermo but second-half goals by ex-Juve striker Fabrizio Miccoli and substitute Igor Budan sent the Rosanero from sixth into the top four.
Inter claimed a 3-2 win at Udinese despite Simone Pepe putting the home side into a second-minute lead.
Mario Balotelli drew the defending champions level just minutes later before Maicon and a Diego Milito penalty put them in control, although Inter were made to sweat for their first league win in four after Antonio Di Natale claimed his 18th goal of the season with a 52nd-minute penalty.
Alexandre Pato's first-half brace set Milan on course for a 3-1 home win against Atalanta and took the Brazilian's personal tally to 12 league goals.
Jaime Valdes pulled one back in the 55th minute but Marco Borriello struck just five minutes later to secure the Nerazzurri's fourth straight league win, although top scorer Pato hobbled off late on with a thigh injury.
Third-placed Roma now trail Inter by seven points after a 2-2 draw at Napoli, with the hosts coming from 2-0 down to equalise with a last-gasp Marek Hamsik penalty.
Rare Parma win
Sampdoria missed out on the chance to climb above Juve and Napoli as Cristian Zaccardo gave Parma a 1-0 home victory and their first win in 13, but there were defeats for the two teams below seventh-placed Samp too.
Cagliari lost 2-1 at Chievo as both teams had a man sent off in the second half before sub Pablo Granoche grabbed a late winner for Chievo.
And ninth-placed Genoa were beaten 4-3 at home by Bologna, with the visitors equalising three times before Adailton secured his hat-trick - and the three points - with a 79th-minute penalty.
Elsewhere, Siena came from behind to snatch a 2-1 win at third-bottom Livorno, with Massimo Maccarone's last-minute winner putting Siena within six points of safety.