Milito strikes as Inter end Milan unbeaten run
The Argentine broke clear of the defence and placed his shot inside the far post to propel Claudio Ranieri's team back into the title race and end Milan's unbeaten 12-match league run in which they dropped only two points.
Champions Milan, who began the weekend as joint leaders with Juventus, had the better of the first half but failed to take their chances as coach Massimiliano Allegri lost a derby for the first time in his 18 months in charge.
Milan dropped into second place one point behind Juventus after the unbeaten Turin side drew 1-1 at home to Cagliari. Inter stayed fifth but their sixth successive win moved them within six points of Juventus, who have 38 points.
"It was an important examination for us, in terms of the table and team morale," Milito told Inter's website.
"Winning the derby is the best thing possible especially for everyone who supported me when things got difficult."
Ranieri said: "This was a gigantic step. We've played a good game, tactically aware. We're playing well and getting our pride back."
A dreadful stoppage-time miss by forward Milos Krasic cost Juventus the chance to win after they squandered an early lead.
Krasic, out of favour under coach Antonio Conte this season, was given a rare chance and failed to take it as he sent a weak effort wide when presented with a free shot inside the penalty area.
Mirko Vucinic had given unbeaten Juventus a seventh-minute lead, only for Andrea Cossu to equalise three minutes after the break with a 25-metre shot that swerved away from Gianluigi Buffon.
Former Italy coach Roberto Donadoni, sacked by Cagliari before the start of the season, made a winning start at Parma who beat Siena 3-1, leaving them 12th with 22 points.
Donadoni replaced Franco Colomba, sacked by the Sardinians after last week's 5-0 defeat at Inter.
Third-placed Udinese lost ground in a 3-2 defeat at Genoa where they were missing three regular players - Kwadwo Asamoah (Ghana), Emmanuel Agyemang-Badu (Ghana) and Mehdi Benatia (Morocco) - who have been picked to play in the Africa Cup of Nations which starts on Saturday.
Although Damiano Ferronetti gave Udinese a half-time lead, they were stung by three goals in a 21-minute spell from Andreas Granqvist, Bosko Jankovic and Rodrigo Palacio.
Striker Antonio Di Natale, 34, pulled one back from a penalty, his 13th goal of the season.
Udinese have 35 points, two more than fourth-placed Lazio, who narrowed the gap with a 2-0 win over 10-man Atalanta.
Hernanes converted a first-half penalty and Miroslav Klose added the other in stoppage-time, both celebrating with acrobatic somersaults, as Lazio ended a three-match winless run and bounced back from last week's 4-0 defeat at Siena.
Romania forward Adrian Mutu scored twice, including a penalty, to give Cesena a 3-1 win over bottom club Novara who are level with Lecce following their 1-0 win at Fiorentina.
On a foggy night at San Siro, Alexandre Pato, Kevin-Prince Boateng and Mark van Bommel, who crashed his effort against the crossbar from an unmarked position, missed chances as Milan had the better of the first half.
Inter occasionally threatened on the break and Ricardo Alvarez shot straight at Christian Abbiati from 10 metres as he wasted their best first-half chance.
Ranieri, the fourth different Inter coach to face Allegri over the last 18 months, saw his side break the deadlock following a run by 38-year-old Javier Zanetti.
Ignazio Abate failed to cut out his pass which found Milito, who burst clear to score with a clinical finish and repay Ranieri's faith in him.