Edoardo Bove, Lorenzo Pellegrini and substitute Tammy Abraham scored for the home team, while Udinese forward Roberto Pereyra played a nightmare as he conceded a penalty and had a spot-kick saved.
Roma moved three points above AC Milan and five points above fifth-placed Inter Milan after they both dropped points 24 hours earlier.
The top four in Serie A qualify for next season's Champions League.
Roma won their previous two Serie A matches without conceding a goal but lost at Feyenoord midweek in the Europa League.
Paulo Dybala had come off injured during that loss — as had Abraham — and was ruled out of the game at the Stadio Olimpico.
Roma took the lead eight minutes before halftime when they were awarded a penalty following an on-field review that determined Andrea Belotti's header had come off the arm of Pereyra.
Bryan Cristante's spot-kick came off the right post but the 20-year-old Bove fired home the rebound.
Pellegrini doubled Roma's lead 10 minutes after the break after a wonderful through ball from Belotti.
It was Pellegrini's first goal from open play in more than 18 months and came on his 100th match as captain of his hometown club.
Udinese were gifted a way back into the match in the 69th minute when they were awarded a penalty of their own following a handball by Gianluca Mancini.
However, Pereyra's effort was saved by Roma goalkeeper Rui Patricio.
Abraham came on for Belotti in the 74th and headed in Leonardo Spinazzola's cross in added time.
AAP