The two clubs agreed a deal on Tuesday afternoon for 20 million pounds that will be spread over five years, while the Italy international is taking a pay cut on his 110,000 pound-per-week wages to join the Serie A side.
"Milan have acquired Mario Balotelli, he has signed a contract until 30.06/2017," AC Milan confirmed via its official twitter account.
The 22-year-old Italy international brings an end to a controversial two-and-a-half-year stay in England with Roberto Mancini's side, during which he scored 20 goals in 54 league appearances, helping the club to win both the Premier League title and FA Cup before moving back to his homeland. He was also involved in a number of off-field episodes, including a recent training ground bust-up with manager Roberto Mancini, which led many to believe he would be exported during the transfer window.
The move comes after a series of denials from both sides, with AC Milan chief executive Adriano Galliani, Mancini and Manchester City assistant coach David Platt all playing down speculation of a move before the two sides reached an agreement this week.