Inter triumph in Milan derby
Argentine forward Diego Milito set the champions on their way with a diagonal strike on 10 minutes.
They then spent long periods under intense pressure in their own half after Dutch playmaker Wesley Sneijder was sent off for dissent in the 27th minute before Goran Pandev doubled the lead with a free-kick in the 65th.
Inter keeper Julio Cesar saved a generous stoppage-time Ronaldinho penalty for handball by Lucio, who was also shown a red card.
Victory gave Inter 49 points from 21 matches, while Milan are on 40 having played one game less.
"I'm happy to have given my contribution," Julio Cesar told Sky television. "It's not easy to play practically the whole game with 10. My team mates showed how strong this group is today."
Milan went into the game as slight favourites even without injured defender Alessandro Nesta thanks to their strong revival from a poor start in which they lost the early season derby 4-0.
But Inter surprised them with an aggressive opening.
Sneijder, who recovered from a high temperature to make their starting XI, hit the far post with a long-range effort before blasting a good chance straight at Milan keeper Dida.
Milito took advantage of a blunder by Milan's Ignazio Abate, who headed the ball into his path when trying to cut out a cross, to give them a deserved lead.
Sneijder was shown a red card for giving the referee sarcastic applause when his team-mate Lucio got booked for diving after a challenge by Massimo Ambrosini and an already intense clash became bad tempered.
Milan pressed hard after the break when substitute Clarence Seedorf had a header saved from short range. Ronaldinho came close with a shot from the edge of the box and Marco Borriello nodded a splendid David Beckham cross over the bar.
Inter were dangerous on their rare forays forward though and Pandev had struck the woodwork at the end of a counter-attack before scoring his side's second. Cesar capped off a great night for Jose Mourinho's men with a superb penalty save.
Palermo climbed to fifth with a 3-0 home win over Fiorentina thanks to a first-half double by 19-year-old Uruguayan forward Abel Hernandez and Igor Budan's acrobatic effort just before the hour.
The Sicilians' victory means Juventus drop to sixth after their miserable run continued with a 2-1 home defeat by third-placed AS Roma on Saturday, leaving coach Ciro Ferrara in danger of losing his job.
Napoli consolidated fourth place with a 2-0 win at lowly Livorno. The Tuscan side's coach Serse Cosmi quit after the game, citing differences with the club president.
Sampdoria boss Luigi Del Neri's surprise decision to drop out-of form- forward Antonio Cassano seemed to pay dividends as the early pacesetters twice came from behind to beat struggling Udinese 3-2 and halt a slide in form.