Lazio's winless run stretched to seven matches in all competitions, as Francesco Acerbi's last-gasp goal was disallowed.
The Biancocelesti conceded to Duvan Zapata inside the first minute, and despite recovering from a shambolic start they provided very little cutting edge in Bergamo.
The result moves the Orobici to within one point of the capital club, who will slip four behind the Champions League places if Milan beat Bologna tomorrow night.
Lazio were on a run of six matches without a win in all competitions, and Coach Simone Inzaghi brought in Joaquin Correa in place of Felipe Caicedo to support Ciro Immobile up-front.
It was a nightmare start for the visitors though, as they went behind after just 58 seconds.
Francesco Acerbi was stumbling backward as he tried to clear a cross, and ended up missing the ball completely.
It found its way to Zapata at the far post, and he fired between a defender’s legs and into the bottom corner.
It was nearly 2-0 on six minutes, Stefan Radu poking the ball just past his own post after a dangerous cross by Zapata.
Correa and Immobile linked up for the first time in the match, with the Italian forcing a fine save from Etrit Berisha after a perfectly weighted through ball.
Inzaghi was furious on the touchline, and his mood wasn’t helped when Jose Luis Palomino was afforded a free header in the box, though he couldn’t get any power in it and Thomas Strakosha saved comfortably.
Sergej Milinkovic-Savic tried to bend one into the corner at the other end, but his effort went high and wide.
Lazio started to get more of the ball, but with the hosts dropping deep they struggled to carve out any clear cut chances.
Immobile got up to head Marco Parolo’s cross at the back post, but his effort across goal was just too high and landed on the roof of the net.
The Biancocelesti almost made the same mistake at the start of the first half, leaving Zapata free for a header which went just wide.
Strakosha nearly sold a second goal with a poor touch, but he scrambled the ball away from Josip Ilicic and then Zapata, receiving an accidental kick in the head for his troubles.
At the other end, Immobile scuffed wide after confusion in the Atalanta box, before ballooning over minutes later.
Berisha made a howler of his own, but did just enough to scramble it away from Sergej Milinkovic-Savic.
The Serbian has been struggling for form this season, and a header which looped wide of the far post was testament to that.
Inzaghi went for broke, taking off central defender Wallace and bringing on Caicedo, who saw a goal-bound shot blocked after a hopeful long ball forward.
Gasperini soon responded, taking off captain Papu Gomez in favour of an extra defender in the shape of Andrea Masiello.
Just as it appeared it was all over, Acerbi got above Masiello at the back post on Luis Alberto's cross to head it into the net.
The Aquile faced a nervous wait though, as VAR got involved to check whether the goalscorer had been offside.
After around two minutes Daniele Orsato signalled no goal, as Acerbi's foot was offside, to roars of delight from the Atalanta fans.
See the latest Serie A predictions and betting tips with Eurotips.co.uk