The controversial Italian had been widely expected to leave this month, after failing out of favour with the Premier League champions.
Despite fears that a deal may not be reached, the San Siro side have forced through a £19m pound move, with a series of add-ons likely to take the figure to around £22m.
The 22-year-old will undertake a medical on Wednesday ahead of completing the move.
Roberto Mancini has frequently backed Balotelli, insisting that he was not available for a transfer, but is thought to have finally run out of patience with the front-man.
A series of poor displays and off-field issues, including a scrap between the pair at the club’s training ground, has pushed their relationship to near breaking point.
Having sold both Alexandre Pato and Zlatan Ibrahimovic of late, Milan were only too keen to use these circumstances to their advantage to tie up a move.
Balotelli has previously played for their local rivals Inter Milan, but that has not deterred their interest.
City may use the injection of cash to bring in reinforcements ahead of Thursday’s transfer deadline, with the club keen to overhaul Manchester United and retain their Premier League title.