The Atalanta attacker has completed a deadline day move to San Siro after the Rossoneri missed out on Parma's Jonathan Biabiany.
The French attacker had looked set to make San Siro his home after being pictured with a Milan T-shirt and scarf earlier Monday, but Cristian Zaccardo's decision not to move to the Ennio Tardini as part of the swap deal brought about the collapse of the ex-Inter man's transfer.
MORE: Beautiful people who love the beautiful game | Transfer photos
Milan moved quickly to sign a replacement, though, bringing in Bonaventura from Atalanta in a deal worth around 7 million euros plus bonuses. The 25-year-old is a product of the Bergamo side's youth system and played 134 games for the Orobici over a seven-year period.
He joins Fernando Torres and Marco van Ginkel at Milan, with both players having been confirmed as new signings by the club in the final days of the transfer window.