The visitors had dominated taking the lead after 25 minutes through Ruslan Malinovskiy in the Stadio Olimpico. But the Bergamo side played the final 20 minutes a man down after Robin Gosens was sent off for a second yellow card.
Cristante put his name on the scoresheet with a quarter of an hour to go. Atalanta missed the chance to overtake AC Milan who lost at home to Sassuolo midweek, but move third ahead of champions Juventus on goal difference. Roma remain seventh, 10 points off the Champions League places, with six games to play.
Gian Piero Gasperini's away side had dominated but were unable to take advantage of their many scoring chances. Malinovskyi, who also scored the winner against Juve last weekend, latched onto a Gosens cross to fire into the roof of the net.
Pau Lopez proved decisive in the Roma goal denying Duvan Zapata and Josip Ilicic with Luis Muriel missing a chance to score a second before Gosen's sending off.
Roma smelled blood, piling forward with Lorenzo Pellegrini sending through for Edin Dzeko but Pierluigi Gollini was solid in the Atalanta goal. Roma also finished the game a man down with Roger Ibanez sent off deep into injury time.
Standout matches today