Stephan El Shaarawy benefited from some slipshod defending to score a couple of goals before Andrea Petagna finished with some ease as the Italian side somehow escaped from the first half trailing 5-3.
Silva flicked the ball into the net for the opening goal - on just three minutes - from a great run and cross by Jesus Navas after a lovely ball back into the area by Stevan Jovetic.
Richards bounded into the Milan box to add the second in the 19th minute after Marco Amelia had saved his initial stop.
Milan continued to mark space as Kolarov drove the ball into the corner of net for a 3-0 lead shortly afterwards. Dzeko then tapped home from a Navas delivery across goal for the fourth.
It was getting embarrassing for Milan when four minutes later Dzeko swivelled to thump a volley into the net from Yaya Toure's ball, but the Sere A side somehow rallied with three goals of their own despite being outplayed for large swathes of the first half.
The second period brought a rash of changes, but no more goals.
City will face hosts Bayern Munich or Sao Paulo in the final of Audi Cup tomorrow night. They contest their match later on this evening.