Still not completely out of the running to win the title, Udinese entered this game knowing they needed a win but were frustrated for large parts of it.
They were rewarded for their patience in the end, though, with Di Natale converting from the spot after Alessandro Parisi had brought down Alexis Sanchez.
Di Natale was in the action from the off, having a goal disallowed for offside with nine minutes gone.
The same player then tried his luck from the edge of the box, before Sanchez broke through but could not get the better of Jean-Francois Gillet.
Despite their early dominance, Udinese nearly went behind when Mehdi Benatia had to clear from under his own bar, while at the other end, Gillet made another fine stop to keep out Sanchez.
Udinese only had themselves to blame for not being ahead, with Di Natale fluffing his lines after getting into the box, while Gillet had to be alert to stop Juan Cuadrado netting.
The breakthrough did finally come, though, with Parisi bringing down Sanchez with 15 minutes to go, allowing Di Natale to do the rest.
Udinese still had the opportunities to make it two, with Giovanni Pasquale unable to convert when finding himself well placed, and Sanchez curling wide from 25 yards.
It could have been an unhappy ending for the home side, though, with Samir Handanovic flinging himself to his left to deny Gergely Rudolf what looked to be a certain equaliser.