Inter Milan found the net three times in the second half to ensure that boss Luciano Spalletti was left smiling against the club he managed last season.
Inter join Juventus with six points from six at the top of the Serie A table, having earned an equally-impressive 3-0 win against Fiorentina last weekend.
Antonio Candreva should have opened the scoring for the visitors 12 minutes in, but he scuffed his shot when picked out by Ivan Perisic and was unable to find a way through.
It was Roma’s turn to come close moments later, as Aleksander Kolarov’s long-range volley required a touch from Samir Handanovic to help it onto the post.
The Giallorossi were in front from their next attacking move, however, thanks to Edin Dzeko’s close-range finish at the end of a fine pass over the top from Radja Nainggolan.
Handanovic produced another good save to keep out Dzeko later in the first half, while Candreva could only pick out the gloves of Alisson Becker at the other end.
Nainggolan’s first-time effort gave the visitors a further scare, striking the post and being cleared away, but Inter were still in the game and Alisson was needed to thwart Icardi with a good reaction stop.
Roma his the post for the third time a little over an hour into the contest, this time after Diego Perotti unleashed a bullet strike that rattled the frame of the goal.
Spalletti’s men could hardly believe their luck when, just a couple of minutes later, Icardi pounced to clinically tuck the ball past Alisson.
Dalbert did well to keep Stephan El Shaarawy’s attempt off the line, and it proved a big moment in the match as Icardi was soon at it again as he blasted the ball home on the turn to give his side the lead.
Inter added a third late on through Matias Vecino , who converted from Perisic’s cross when the visitors were given time and space to counter.