Despite their away day blues, Roma started the first half stronger, as new signing Devyne Rensch forced Razvan Sava into a smart save from mid-range.
However, Udinese grew into the game and Thomas Kristensen came close to opening the scoring on the half-hour mark, as he reacted quickest following a corner to strike towards goal, but Mile Svilar produced a brilliant reflex save.
Eight minutes later, the hosts found the breakthrough through a familiar source in Lorenzo Lucca, as he coolly slotted home following Sandi Lovric’s free-kick.
Artem Dovbyk then thought he had levelled for the Giallorossi just before half-time, yet his goal was ruled out for offside.
It did not take long for the visitors to equalise in the second half though, as they were awarded a penalty just four minutes in when Christian Kabasele handled in the box, allowing Lorenzo Pellegrini to step up and slot low past Sava.
Udinese tried to fight back straight away as Martín Payero was denied well by Svilar from close range, but Niccolo Pisilli then forced an equally brilliant save from Sava from distance moments later.
The match swung in Roma’s favour just after the hour mark as they were given another penalty, and this time Sava was the perpetrator.
A different player stepped up in Dovbyk, although he produced the same result, striking low into the corner to turn the game on its head.
Udinese pushed in the latter stages but ultimately slumped to their seventh defeat in 13 league games and ninth home loss in 12 head-to-heads.
As for Roma, they put their midweek setback against AZ Alkmaar behind them to end a 13-match winless away run in Serie A, but both sides still remain in midtable.