Recent arrival Goran Pandev was the difference for Inter, setting up Diego Milito for the first goal and adding the second himself on a free kick.
"Everything was good," Inter coach Jose Mourinho said. "After a few minutes it was clear it was the type of match in which you could see that Inter was in control, concentrated and ready for the task. Inter was excellent and even with 10 men we were even better."
Dutch midfielder Wesley Sneijder was sent off in the 27th minute for sarcastically applauding referee Gianluca Rocchi, and Lucio was ejected in stoppage time for a deliberate handball.
Inter has played one more game than Milan.
"We created a lot of chances at the start of the second half, but couldn't quite find the goal," Milan coach Leonardo said "There is much of the season left to play and I am happy with how we are doing, even if we lost the derby."