Milan were held on 24 points, missing a chance to move up toward fourth place, which carries a berth in the next Champions League.
They now lie 10 points adrift from fourth-place Fiorentina and 25 behind front-runners Inter Milan.
The Devils, however, can further improve their standings in the next three weeks through two other games in hand against Reggina and Livorno.
The Bergamo hosts are now level on 25 points with Sampdoria, Genoa and Palermo, having now played, as most Serie A teams, the 19 games marking the half-season point.
They were sentenced to play without home public until the end of March, following the November clashes by fans who rioted following the accidental killing of a Lazio fan by a police officer.
Atalanta captain Cristiano Doni squandered the game's first chance on six minutes, firing high after a good feed from Fernando Tissone.
Clarence Seedorf replied for Milan on 16 minutes with a fierce shot deflected by Ferreira Pinto. A further deflection on the following corner kick proved fatal for the hosts, as Doni fooled his goalkeeper Ferdinando Coppola, deflecting a Gennaro Gattuso shot.
As Milan kept pushing for a second goal, young Brazilian Alexandre Pato made an incredible mistake on 32 minutes, firing wide after defender Moris Carrozzieri botched a backward pass.
In-form striker Antonio Langella triggered Atalanta's comeback on 42 minutes, controlling a pass on the left flank of the area to beat Zeljko Kalac with a low drive by the first post.
The reversal was completed on 68 minutes as substitute Simone Inzaghi stormed past Kakha Kaladze and fed an assist for the winning flick from Tissone, who shook the bar with a fast drive on 78 minutes.
A minute earlier, veteran Ronaldo, brought on for his compatriot Pato, had a spurt in the area blocked by Coppola's boot.
The Atalanta custodian was ready again on 83 minutes, deflecting a nasty, low drive from Brazil star Kaka and a late effort by Seedorf.