Sergio Floccari put the home side ahead in the 18th minute before Cristiano Doni added another with a further 10 minutes on the clock.
Doni’s second five minutes later ensured Atalanta claimed their first win over Inter in almost 15 years and opened up the race for the Scudetto at the midway stage of the season.
Zlatan Ibrahimovic netted his 12th goal of the campaign in stoppage time, but it was too little too late for Inter, whose lead at the top was cut to three points after second-placed Juventus drew 1-1 at Lazio in the evening game.
Cristian Ledesma put the Rome side ahead after 24 minutes but Sweden defender Olof Mellberg equalised five minutes later.
Genoa maintained their surge up the table with a 2-0 win at Lecce which moves them up to fourth in the standings, just two points adrift of third-placed AC Milan.
Goals in the second half from Bosko Jankovic and Giuseppe Sculli earned the Rossoblu all three points.
Chievo climbed off the foot of the table with a controversial win over high-flying Napoli in Verona.
Domenico Di Carlo’s side probably deserved the victory in a match they dominated throughout, however the 74th-minute penalty that sealed their win was debatable.
Leandro Rinaudo was the player harshly adjudged to have fouled Simone Bentivoglio in the area with Michele Marcolini stepping up to stroke home his second spot-kick of the game.
Marcolini had earlier converted from the spot after 30 minutes only to see that effort cancelled out by Ezequiel Lavezzi shortly after the break.
Napoli’s Marek Hamsik and Chievo’s Santiago Morero were both sent-off.
Julio Baptista scored a last-minute goal to hand Roma all three points at Torino while Udinese coach Pasquale Marino remained under pressure after his side lost 2-0 at Cagliari thanks to goals from Daniele Conti and Davide Biondini.
Bologna extended their unbeaten run to nine matches with a crucial 2-1 win at 10-man Catania.
After Mariano Izco was sent-off for a bad challenge, Marco Di Vaio fired the away side ahead early in the second half before Adailton headed home to make it 2-0.
Catania could have dragged themselves back into it had Giuseppe Mascara not missed a penalty and when Michele Paolucci did eventually score, it was too late for the home side to salvage a point.
Palermo ruined Giampaolo Pazzini’s debut for Sampdoria with a smash-and-grab win at the Stadio Luigi Ferraris.
Two goals from Mark Bresciano either side of half-time earned Davide Ballardini’s men all three points to deny Samp, who were hoping the arrival of Pazzini from Fiorentina this week would breathe life into their season.
On Saturday night, AC Milan beat Fiorentina 1-0 – Alexandre Pato grabbing the goal – in what could be Kaka’s last game for the Rossoneri as he continues to mull over a move to Manchester City, while Mario Frick scored as Siena won 1-0 against Reggina, who are now bottom.