An early Olivier Giroud penalty and Rafael Leao's stunning volley two minutes after half-time gave Milan a deserved victory at the Stadio Olimpico and took their points tally to nine after three games.
Stefano Pioli's side were worthy winners in the Italian capital despite having to play the final half an hour with 10 men after Fikayo Tomori was sent off for two bookable offences.
Milan have brought in a host of new faces over a busy summer and Christian Pulisic, Ruben Loftus-Cheek and Tijjani Reijnders all performed well again as Milan moved three points ahead of Verona, Inter Milan and Napoli.
Leonardo Spinazzola netted in stoppage time for Roma who have a single point from their first three matches and have dropped into the relegation zone, a place above local rivals Lazio.
Jose Mourinho's side are also in the midst of an injury crisis just weeks into the new campaign, with Houssem Aouar picking up a thigh knock in the first half and joining Paulo Dybala, Sardar Azmoun and Renato Sanches on the treatment table.
Not even the introduction of star loan signing Lukaku not long after Tomori's dismissal could give Roma the breakthrough against Milan who look a serious candidate for the league title.
And he was on the spot to hand the hosts their first win of the campaign, the 29-year-old involved in Andrea Pinamonti's 11th minute opener before bagging his brace in 10 second half minutes after Cyril Ngonge had equalised.