Marcelo Brozovic and Romelu Lukaku struck as Inter continued their 100 per cent start to the Serie A season and extended a strong recent record in derbies against city rivals AC Milan with a 2-0 victory.
A deflected strike from Brozovic four minutes into the second half and a late clincher from Lukaku settled a contest that Antonio Conte's men always looked likely to win.
Milan, the designated home team at the shared San Siro, only produced one shot on target and were comfortably kept at arm's length by Inter after the opening goal.
The Rossoneri have now lost two of their first four games under coach Marco Giampaolo and failed to beat Inter in seven consecutive league derbies.
The first big chance came when Lautaro Martinez slipped Lukaku through on goal, the Belgium striker's right-footed shot forcing a one-handed save from Gianluigi Donnarumma.
A better opportunity arrived in the 21st minute, but Danilo D'Ambrosio could somehow only hit the post from four yards on the rebound after Donnarumma made a reaction save from Martinez, the opening created by Stefano Sensi's clever cut-back.
Inter almost paid the price for those misses when Hakan Calhanoglu found the net, but the goal was disallowed because Kwadwo Asamoah's poor clearance was adjudged to have struck the arm of Franck Kessie on his 100th Milan appearance.
D'Ambrosio thought he had made amends with a stunning overhead kick which was somehow saved by Donnarumma and tucked in by Martinez on the rebound, but an offside flag halted the move.
Inter broke through after the break, Brozovic's strike from the edge of the area taking a wicked deflection off Rafael Leao to beat Donnarumma after Sensi's lay-off.
And the win was sealed 12 minutes from time with Lukaku guiding a well-judged header into the far corner from Nicolo Barella's left-wing cross.
Matteo Politano's late curler struck the crossbar and Antonio Candreva's deflected shot bounced off the inside of the post as Inter threatened a third, with Milan left to reflect on a forgettable performance that also saw Theo Hernandez strike the woodwork in the closing minutes.
What does it mean? Juventus clash looming large for assured Inter
After a poor Champions League outing against Slavia Prague, this assured victory will come as a significant boost to Inter.
They have won all four of their Serie A matches, conceding just once in the process, and the Derby d'Italia against champions Juventus on October 6 is already looming large as a huge early test of their Scudetto credentials.
For Milan, meanwhile, scrutiny of Giampaolo's tactics is unlikely to go away after this defeat.
Lukaku makes his mark
After drawing blanks against Udinese and Slavia, it looked like another frustrating outing was coming for Lukaku when Donnarumma impressively denied him in the first half and he produced an odd aerial effort on the hour mark.
But the former Manchester United star delivered with a fine header to wrap up the victory and then showed good link-up play to set up Politano's effort against the bar. This was a display he needed.
Leao does not make desired impact
Leao was handed his first Milan start on a big occasion, named in the starting XI ahead of Lucas Paqueta and Ante Rebic despite having only played for 15 minutes before this encounter.
But he did not make the impression he wanted, deflecting in Brozovic's goal at one end and not registering a shot in attack, despite playing 83 minutes.
Key Opta stats
- AC Milan had only one shot on target – their equal worst total in a Serie A derby since 2004-05.
- Brozovic became the third Croatian to have scored in the Milan derby, after Zvonimir Boban and Ivan Perisic.
- He has now scored his last three goals in Serie A from outside the box.
- Before his moment of glory on Saturday, Lukaku's last headed goal in a domestic league came for Manchester United against Burnley in the Premier League on September 2 2018.
- Leao became the first AC Milan outfield player born after January 1 1999 to start a Serie A match. The Portuguese forward was born on June 10 1999.
In-form Inter are back at San Siro against Lazio on Wednesday, while Milan are away a day later against Torino.