The Bergamaschi looked to be heading for a long overdue win when Davide Brivio gave them a 24th-minute lead at the Friuli stadium.
However, Di Natale earned and converted a penalty 19 minutes from time to earn his side a share of the spoils.
The outcome in Udine lifted Atalanta to 14th place, level on 28 points with Udinese, who are 12th. Both sides are eight points clear of the relegation zone.
Atalanta were unlucky not to take a seventh-minute lead when Giacomo Bonaventura surged inside the area and fired a left-footed shot that struck the far post.
In the 20th minute, Udinese goalkeeper Simone Scuffet was at full stretch to keep out Maximiliano Moralez's acrobatic effort from 20 yards.
Atalanta took a deserved lead before the half-hour mark when an unmarked Brivio met Cristian Raimondi's cross at the far post and beat Scuffet.
The home side struggled to break down Atalanta's well-organised defence until the 69th minute, when Nico Lopez found Di Natale in the box and his right-footed attempt was kept out by Atalanta goalkeeper Andrea Consigli.
Di Natale made no mistake seconds later when the referee pointed to the spot after he was brought down inside the area by Guglielmo Stendardo.
The veteran striker sent the ball to the right corner of goal, out of Consigli's reach.
Substitute Luca Cigarini was unfortunate not to put Atalanta 2-1 up five minutes from time after his fierce strike from outside the area struck the bar with Scuffet already beaten.