Udinese starting XI (3-4-2-1): Okoye, Solet, Kristensen, Bertola (subbed for Kabasele), Ehizibue, Karlstrom, Miller (subbed for Zarraga), Zemura, Ekkelenkamp (subbed for Bayo), Atta, Davis (subbed for Gueye who was subbed for Zaniolo
Bench: Nunziante, Padelli, Arizala, Camara
Goals: Ekkelenkamp 49’
Roma starting XI (3-4-2-1): Svilar, Mancini, Ndicka, Hermoso (subbed for Ghilardi), Celik (subbed for Tsimikas), Cristante, El Aynaoui (subbed for Pisilli), Wesley, Soulé (subbed for Vaz), Pellegrini (subbed for Venturino), Malen
Bench: Vasquez, Gollini, Rensch, Angelino, Ziolkowski, Arena, Della Rocca
In a tight encounter, a deflected freekick early in the second half proved decisive, leaving Roma to rue missed opportunities as they slipped further off the pace in the top-four race.
The opening 45 minutes were largely cagey, with both teams probing for openings but failing to carve out clear chances.
The decisive moment arrived in the 49th minute. From a freekick on the edge of the box, Jurgen Ekkelenkamp struck a powerful effort that took a slight deflection off Donyell Malen in the wall and eluded Roma goalkeeper Mile Svilar, nestling into the corner to give the hosts a crucial lead.
Roma sought a response, pushing numbers forward and creating moments of pressure in the closing stages, including a late header that was ruled out for offside during the build-up and a superb late save from Udinese keeper Maduka Okoye deep into stoppage time.
Despite their best efforts, the visitors could not find an equaliser as Udinese’s defence stood firm.
For Roma, the defeat puts added pressure on Gian Piero Gasperini’s side as they look to stay within reach of the Champions League places.