Walter Samuel headed Inter in front in the fourth minute following a howler from goalkeeper Christian Abbiati as the Nerazzurri's quick start seemed to surprise Milan.
Milan improved but had Riccardo Montolivo's goal disallowed for a foul on Inter goalkeeper Samir Handanovic.
Inter's chances of a third straight derby victory seemingly diminished when Yuto Nagatomo was sent off for a second yellow card shortly after the break. Milan laid siege to the Inter goal but could not find the equalizer, despite going agonizingly close on several occasions.
It was also denied what looked to be a clear-cut penalty late on when Robinho appeared to be brought down by Samuel.
"I have nothing to reproach the squad about tonight," said Milan coach Massimiliano Allegri, whose team is off to its worst league start in 72 years after losing four of its first seven games. "I'm disappointed with the incidents that happened. I almost never talk about the referee, actually I never do, but tonight he was unlucky, he had an unhappy night. He made decisions only against us and he should have made decisions that he didn't. It was a match in which we were punished by the referee in the most astonishing manner. ... He also ruled out the goal and I don't understand why."
In a heated atmosphere, there were several calls over the speaker system for the fans to stay in their seats and behave themselves or risk the game being suspended.
Former Milan striker Antonio Cassano was roundly jeered throughout by the home support in his first match against his old club since his off-season switch to its bitter rivals.
There were also several banners negatively referring to Cassano's heart surgery last year.
However, Cassano seeemed to revel in the atmosphere, at one point repeatedly raising his arms to encourage the fans to whistle more loudly as he strolled to take a corner.
"We still have a lot of things to work on but tonight was very positive," Inter coach Andrea Stramaccioni said. "I was happy to see how the lads were on the pitch, they played more as a group and really look like a squad now.
"It's three games now that it looks as if in order to score against Inter you have to be really good, whereas before in a the home games it seemed as if you needed little to score against us. That's exclusively down to my footballers. It's a work in progress but it's going well."
Inter got off to the perfect start when Samuel headed in Esteban Cambiasso's free kick after Abbiati badly mistimed his interception. The Milan goalkeeper almost gifted Diego Milito Inter's second moments later.
Milan had its first chance in the 14th minute with a well-worked free kick, which Bojan Krkic passed across to Montolivo, who lashed it just past the left hand post.
Stephan El Shaarawy — who had scored five goals in his past four matches — then found a way through but, under pressure from Nagatomo, he couldn't get a clean shot on goal and fired wide.
Montolivo had the ball in the back of the net in the 40th minute with a 30-yard screamer into an empty net but the referee ruled it out for a foul moments earlier by Urby Emanuelson on Handanovic as the Inter goalkeeper came flying out to punch the ball clear.
Milan was buoyed minutes into the second period when Nagatomo received a second yellow for handball.
Bojan went closest for Milan as Handanovic made a rare mistake and spilled a shot but the former Roma striker slipped as he raced towards the ball, with only the Inter goalkeeper to beat.
Elswehere, Napoli remained joint top with Juventus after beating Napoli 2-1. Marek Hamsik and Goran Pandev scored in the first half, either side of Giampiero Pinzi's leveler to set up a mouthwatering contest between the top two after the international break.
Earlier, defending champion Juventus stretched its Serie A unbeaten streak to 46 games with a 2-1 victory at Siena.
Claudio Marchisio scored what proved to be the winner for the league leader six minutes from time. Andrea Pirlo gave Juventus the lead with a trademark free kick in the 13th minute but Emanuele Calaio levelled in first-half stoppage time.
Also Sunday, high-flying Lazio cruised to a 3-0 win at struggling Pescara. Hernanes opened the scoring with a stunning 30-yard free kick in the fifth minute, before Miroslav Klose grabbed a brace.
In the lunchtime fixture, American Michael Bradley scored his first goal for Roma in a 2-0 win against Atalanta. Erik Lamela scored the opener.
Stevan Jovetic continued his impressive start to the season as he scored his fifth goal of the season to send Fiorentina on its way to a 1-0 victory against Bologna.
Catania also got off to a good start in its 2-0 win against 10-man Parma as Alejandro Gomez gave it the lead with less than two minutes on the clock.
Parma defender Yohan Benalouane was sent off midway through the second half for a second bookable offence, before Gonzalo Bergessio sealed the result.
Elsewhere, Cagliari's new coaches Ivo Pulga and Diego Lopez got their reign off to a perfect start, recording the Sardinian team's first victory of the season with a 1-0 win at Torino.
Nene scored the only goal of the game in the 74th minute from the penalty spot following Torino defender Kamil Glik's handball.