Carlo Ancelotti's Napoli lost further ground to the reigning champions after Inter Milan substitute Lautaro Martinez hit a stoppage-time winner in a tense 1-0 victory at the San Siro.
Juventus coach Massimiliano Allegri decided to rest Ronaldo as the former Real Madrid man did not start a league game for the first time since moving to Italy, but the 33-year-old was needed to level in the 78th minute after Duvan Zapata's double had put the hosts in front following Berat Djimsiti's own goal.
Ronaldo's efforts keep Juventus unbeaten in Serie A, ahead of the final game before the winter break against Sampdoria on Saturday.
"It's a shame because we still wanted to win, but the team did well," said Allegri.
Everything appeared to be going to plan for Juve when they grabbed the lead in only the second minute when Atalanta centre-back Djimsiti completely miskicked Alex Sandro's deflected cross into his own net.
But Zapata put a spanner in the Juve works with a fantastic individual goal midway through the first half, spinning centre-back Leonardo Bonucci with ease before drilling a left-footed strike into the far corner.
Douglas Costa fired wide just after the half-hour mark as the visitors looked to restore their advantage, but the Turin giants were reduced to 10 men eight minutes after half-time when Rodrigo Bentancur was shown a second yellow card for a poor tackle on Timothy Castagne.
Colombian striker Zapata wasted little time in making Bentancur pay, bundling in from almost on the goalline to put Atalanta ahead and score his ninth league goal of the season.
Allegri sent on Ronaldo with 25 minutes remaining, and less than 60 seconds after Robin Gosens wasted a golden opportunity to seal victory for Atalanta, the Portuguese star pounced to nod home from close range.
Pressure mounts on Gattuso
In Milan, Martinez turned in a bouncing cross in the 91st minute as Inter closed to within five points of Napoli, who finished with nine men after Kalidou Koulibaly and Lorenzo Insigne were both sent off.
Koulibaly was dismissed with 10 minutes left after two yellow cards in quick succession -- the second for sarcastically applauding the referee. The Senegalese defender had repeatedly been the target of monkey chants from home fans throughout the match.
AC Milan's push for a top-four finish took a hit as Gennaro Gattuso's side were held to an uneventful 0-0 draw at struggling Frosinone.
The seven-time European champions have now failed to score in four consecutive league games for the first time since 1984, managing three goalless stalemates in the process.
"To reach our objective of Champions League qualification we can't play the way we did in the first half," Gattuso told DAZN.
"I'm the captain of this ship, so it's only right that I take all the responsibility. It's important for me to understand how to make my players play their best, because right now they're performing below their ability.
"There's no calmness and they look nervous, that's what I need to think about. As for the rest, anything can happen."
Milan slipped to sixth, behind fourth-placed Lazio by three points in the race for Champions League qualification.
Capital club Lazio won 2-0 at Bologna, while Sampdoria leapfrogged Milan into fifth by seeing off rock-bottom Chievo 2-0.
Roma are a point behind Milan in seventh after easing to a 3-1 win over Sassuolo as teenager Nicolo Zaniolo notched his first Serie A goal, while Torino climbed to eighth courtesy of a 3-0 defeat of Empoli.