Despite the hosts dominating, Belotti took advantage of the best opportunity of the game to fire his side ahead and pull them five points clear of the relegation zone.
The first half saw both sides miss clear cut chances, before Belotti ended his goal drought and broke the deadlock to secure victory.
The best chance of the opening quarter of the match fell to Torino however, with an angled Belotti cross finding the unmarked Antonio Sanabria free in the box. The Paraguayan striker could not make a connection with his header with the goal at his mercy however.
However, the Granata survived a scare of their own making on the half-hour mark, as a mix up in defence ought to have led to a goal. Alessandro Buongiorno shielded the ball in his own area and expected goalkeeper Vanja Milinkovic-Savic to collect, but when the Serb didn’t come out it allowed Nahuel Molina in, though he blazed over from close range.
Udinese began the second half on the front foot and De Paul saw a powerful effort whistle just wide of the post.
However, Torino took the lead on the hour mark against the run of play from the penalty spot, as Belotti was bundled over by Tolgay Arslan in the box from a freekick. The Italian international stepped up to fire his penalty into the bottom corner for his first goal since the end of January.
Just 10 minutes later Udinese thought they had a penalty of their own when Rodrigo Becao was pushed by Buongiorno on the edge of the box. A VAR check was called upon to confirm the incident took place in the box, but referee Daniele Doveri instead opted against awarding a foul.
The decision saw the Zebrette lose their momentum, with only substitute Fernando Forestieri coming close. At the other end, Karol Linetty squandered a good chance to put the match beyond doubt late on, but Torino held on for a crucial win.