Di Natale gave his side the lead in the 27th minute and they held on to the end, although both sides missed a chance from the penalty spot.
The result leaves Sassuolo three points adrift of safety and second bottom of the overall standings, while Udinese remained in 14th place but are now 10 points clear of third-bottom Livorno.
Despite their lowly status, Sassuolo started the brightest when Simone Zaza tested Udinese goalkeeper Simone Scuffet, who made a great diving save.
Udinese's first effort came soon after in the 17th minute when Bruno Fernandes tried his luck from outside of the box, but his strike went just wide of the left post.
However, the home side did make the breakthrough 10 minutes later when Giampaolo Pinzi launched a counter-attack and ran into the box, with his ball to the far post headed in by an unmarked Di Natale.
Udinese had the chance to double their lead from the spot in the 36th minute after Sassuolo striker Diego Farias handled the ball in the area following a free-kick, but penalty-taker Di Natale blasted the ball high over the bar.
Sassuolo finished the half with another shot from Zaza which was narrowly off target before Udinese came out after the break and dominated the chances.
Fernandes fired a strike over the bar before Thomas Heurtaux found Di Natale inside the area, but the veteran striker shot wide from the right post before going much closer with a curling effort in the 63rd minute.
Sassuolo then squandered the chance to level the score when Pinzi conceded a penalty after fouling Zaza in the box.
Striker Sergio Floccari took the resulting spot kick but fluffed his lines and hit the post, with keeper Scuffet well beaten.
Floccari's deflected header almost saw the strugglers level things up but it went agonisingly inches wide, before Udinese substitute Luis Muriel was unable to finish things off at the other end when he was unable to get a decisive touch on Emmanuel Badu's low cross from the byline.