The league champions raced into an early lead as Marcelo Brozovic fired them ahead, before fellow midfielder Matias Vecino doubled the Nerazzurri’s advantage.
Roma did not give up without a fight however, and Henrikh Mkhitaryan gave them hope with a goal on the half-hour, before a dominant second half saw Edin Dzeko hit the crossbar, but they couldn’t find an equaliser and were punished by a late Romelu Lukaku goal on the break.
Roma started on the front foot and saw chances for Pedro and Lorenzo Pellegrini go begging, before finding themselves behind against the run of play. Alexis Sanchez released Matteo Darmian in space out wide and the wing-back picked out Brozovic in the box to coolly slot into the bottom corner.
Inter doubled their advantage with only 20 minutes gone as Lukaku latched onto a lofted pass and held the ball up in the box, before teeing up the on-rushing Vecino to fire home.
The Nerazzurri were in again after a rapid break from a Roma corner and Sanchez took advantage of a Davide Santon slip to race through, only for the defender to drag him back on the edge of the box and earn a booking.
Yet on the half-hour mark the Giallorossi halved the deficit, as Edin Dzeko spun on the ball and threaded Mkhitaryan through to fire beyond Andrei Radu.
However, Vecino came close to netting his second immediately after as he fired at Daniel Fuzato in the box. Darmian forced space for himself and found Sanchez for a wonderful reverse flick into the path of Vecino, but he couldn’t take advantage.
A pulsating first half almost concluded with a Roma equaliser after quick build up allowed Mkhitaryan to find space to shoot, but his effort was straight at Radu.
A spirited start to the second half saw the visitors threaten, with Dzeko turning on the ball in the box and unleashing a shot against the crossbar, whilst Bryan Cristante dragged a header inches wide from a promising position.
Inter found themselves penned in but broke clear through substitute Achraf Hakimi as he moved the ball from one end of the pitch to the other, although his finish was unconvincing and was pushed behind.
The Lupi were in the ascendancy and Dzeko worked space in the box to cross for Mkhitaryan, but Radu showed good hands to intercept before the Armenian could tap in.
With less than 10 minutes remaining, Roma midfielder Ebrima Darboe lost possession on the edge of his own box and Andrea Pinamonti was clear, but fired over the bar with the goal at his mercy.
At the other end, veteran defender Andrea Ranocchia rescued Inter with a brave header to take the ball away from Stephan El Shaarawy at the back post, as the forward looked to meet a Rick Karsdorp cross.
Inter secured the win late on as Roma’s push for an equaliser saw them hit on the counter, with Hakimi racing the length of the pitch before squaring for Lukaku to tap in.