Maximiliano Moralez's goal on the hour mark was the difference between the two sides at the Stadio Olimpico.
Lazio shot themselves in the foot two minutes after conceding the goal when playmaker Antonio Candreva was sent off for a second yellow card.
The outcome has lifted Atalanta to 13th in the standings, 13 points clear of the drop zone, and dropped a Lazio side that had not lost at home since December 2 to eighth place.
The home side went into the game looking to make it three league wins in a row for the first time this season.
Lazio players asked for a penalty after a Yohan Benalouane tackle on Keita in the eighth minute but the referee waved play on.
In the 26th minute, Benalouane's hard drive from 30 yards was saved by Lazio goalkeeper Federico Marchetti.
The visitors wasted a good chance on the half-hour when German Denis found Moralez unmarked in the right side of the area but the Argentinian midfielder could not control the ball well enough to attempt a shot.
Lazio almost broke the deadlock in the 31st minute.
Candreva's powerful free-kick forced Atalanta keeper Andrea Consigli to fully stretch to clear.
Atalanta could have gone into the break with a narrow advantage but Gugliermo Stendardo's six-yard header from Moralez's cross was off target.
Lazio dominated possession but could not put a good move together and the visitors finally went ahead.
Marchetti could not hold onto Marcelo Estigarribia's poweful header and Moralez smashed the rebound into the back of the net.
Candreva was then shown his second yellow card for diving, much to the despair of the home crowd.
Moralez should have put the game beyond Lazio's reach in the 73rd minute but he failed to beat Marchetti in a one-on-one.
Lazio almost equalised 15 minutes from time but Keita's goal-bound attempt was saved by Consigli but the hosts ran out of steam and Atalanta held on for three points.