Maxi Moralez netted the decisive strike to land a blow to Lazio's European hopes and hand Atalanta a league double over their opponents. Antonio Candreva saw red for the home side, whose two game winning streak came to an abrupt end.
The Stadio Olimpico was largely empty due to Lazio fans protesting over owner Claudio Lotito. The away side almost silenced the few home fans in attendance on 11 minutes when Marcelo Estigarribia volleyed over a Giacomo Bonaventura cross at the far post.
Alvaro Gonzalez had a half volley chalked off on 19 minutes after the referee spotted Keita's push on Davide Brivio. Minutes later, Abdoulay Konko clipped the top of the bar with a cross turned shot after dispossessing Daniele Baselli on the touchline.
Half an hour in, Candreva sent a free kick towards goal, but Andrea Consigli comfortably kept it from finding the top corner. On the home side's next attack, Keita Balde's shot on the turn from six yards went over.
Just before half time, Moralez's cross was headed the wrong side of the post by Guglielmo Stendardo, while Candreva swerved a low shot past the post.
Lucas Biglia failed to test Consigli from distance four minutes after the restart and Candreva wasted a set piece from a promising position.
Atalanta went ahead on the hour mark. Marchetti kept out Estigarribia's free header, but Moralez was on hand to tap in the rebound for his fifth goal of the season.
Lazio almost equalised immediately. A corner found Giuseppe Biava in space in the Atalanta box, but Denis threw out a leg to block the defender's goalbound effort. At the other end, Marchetti was quick off his line to smother at the feet of Denis.
Lazio went down to ten men when Candreva picked up a second yellow for simulation in the box. The winger had picked up a cheap booking for throwing the ball down in the first half and will now miss his side's trip to Cagliari next weekend. The ten men kept searching for an equaliser. Substitute Senad Lulic got into space and he rolled the ball across the box, only to see his delivery fall several yards behind Klose.
Atalanta almost took advantage of Lazio leaving gaps in defence. Denis squeezed a pass into the path of Moralez, who got in between his markers to poke a shot at goal rather than give the return pass and Marchetti smothered the ball.
Keita forced Consigli to stop his cross from creeping into the top corner and Klose laid off for Biava to turn an effort wide. Gael Kakuta made his first league appearance late on, but a wayward shot was all the on loan Chelsea man could muster.
Atalanta should have doubled their lead with the last kick of the game. Denis pulled the ball back from the byline for Bonaventura to fire over.
Lazio: Marchetti, Konko, Cana, (Perea 76) Biava, Radu, Biglia, Gonzalez, Onazi, (Lulic 46) Keita, Candreva, Klose (Kakuta 86)
Atalanta: Consigli, Benalouane, Stendardo, (Lucchini 79) Yepes, Brivio, Carmona, Baselli, (Migliaccio 71) Estigarribia, Bonaventura, Moralez, (Raimondi 85) Denis
Goals: Moralez 60 (A)
Sent off: Candreva 64 (L)