Icardi was his side's hero with a late strike that completed his hat-trick against the Rossoneri in the same fixture last season, and he once again came up trumps in the derby by heading home in added time at San Siro.
The right-wing cross from Matias Vecino was an inviting one for Icardi, but Inter's captain was fortunate Milan goalkeeper Gianluigi Donnarumma initially came to claim the ball only to misjudge the flight, leaving the striker to nod into an unguarded net.
Victory for Inter extends their winning run to seven games in all competitions, while Milan taste defeat for the first time in nine matches.
Icardi had scored five goals in his last five club appearances and the Argentina international had the ball in the net in the 11th minute, only for his effort to rightly be ruled out for offside.
Lucas Biglia was then booked for a rash challenge on Radja Nainggolan, but replays suggested the Inter midfielder - who later limped off ahead of the midweek Champions League clash with Barcelona - was also fortunate to avoid punishment.
Stefan de Vrij hit the woodwork before Milan also had a goal chalked off, Mateo Musacchio having marginally strayed beyond the last defender to convert a Suso cross from close range.
Matteo Politano sent a mishit volley narrowly wide in the 58th minute and Hakan Calhanoglu fired off target, but neither goalkeeper had much to do in a derby distinctly lacking in quality.
Donnarumma, though, would ultimately cost Milan by horribly misjudging Vecino's delivery from out wide, giving Icardi the chance to once again grab the headlines against Milan.
What it means: More to come from both clubs
Juventus slipping up for the first time this season in a draw at Genoa on Saturday opened the door for the chasing pack to narrow the gap - and Inter took advantage. Luciano Spalletti's in-form side are up to third as their momentum builds, raising the possibility of them catching the Bianconeri and getting involved in a title race.
Assistant referees get tight calls right
VAR has caused plenty of drama in Serie A but there were no arguments with either disallowed goal. Icardi and Musacchio were not offside by much, but replays showed the assistant referees made the right decisions on both occasions. Referee Marco Guida perhaps should have used the technology available to rule on the tackle involving Biglia and Nainggolan, though.
Nasty Nainggolan escapes censure
Nainggolan was substituted after 30 minutes due to injury, but the controversial midfielder probably should have departed even earlier. Biglia was booked after the pair clashed but replays indicated Nainggolan's heavy challenge was more dangerous and perhaps warranted a red card.
Key Opta facts:
- Inter have won five Serie A games in a row in a single season for the first time since January 2017.
- Inter have scored seven goals in the last 15 minutes of play, the most in Serie A this season.
- After four games without goals, Icardi has scored in his last three Serie A appearances.
- Icardi has scored five goals in his last four games against Milan.
- Milan failed to score after 11 Serie A games in a row with at least a goal. Their first attempt on target came in the 80th minute.
4 - Milan made four touches in the opp box in the first half against Inter: their previous negative record in Serie A this season was eight against Sassuolo. Back. #InterMilan pic.twitter.com/6LnoVjB9hr— OptaPaolo (@OptaPaolo) October 21, 2018
Another big game for Inter on Wednesday - they travel to Barcelona - while Milan host Real Betis in the Europa League the following day. The Rossoneri are at home next Sunday against Sampdoria, with Inter away to Lazio a day later.