Op 4 mei 2008 debuteerde Bonaventura in het shirt van Atalanta Bergamo in de wedstrijd tegen AS Livorno. Op 9 november 2008 speelde hij pas zijn tweede wedstrijd voor Atalanta tegen ACF Fiorentina. Op 13 januari 2009 werd bekend dat hij voor zes maanden uitgeleend zou worden aan US Pergocrema 1932. Vijf dagen later scoorde hij bij zijn debuut tegen SS Sambenedettese Calcio. Daarna keerde hij terug naar Atalanta. In januari 2010 mocht Bonaventura opnieuw meedoen, tegen Palermo.
Op 1 februari 2010 werd hij voor de tweede maal uitgeleend, ditmaal aan Calcio Padova. Hij debuteerde op 20 februari 2010 tegen US Triestina. In totaal speelde hij vijftien competitiewedstrijden in de Serie B. In juni 2010 lichtte Padova de aankoopoptie niet, waardoor Bonaventura terugkeerde bij Atalanta om er een contractverlenging tot medio 2015 te ondertekenen. Op 9 november 2010 maakte hij zijn eerste doelpunt voor Atalanta tegen Modena. Bonaventura maakte negen doelpunten gedurende het seizoen 2010/11 en hielp zo de club aan een kampioenschap in de Serie B, waardoor het promoveerde. Op 11 april 2012 maakte hij zijn eerste Serie A-doelpunt, tegen SSC Napoli.[1]
Bonaventura tekende in september 2014 een in eerste instantie vijfjarig contract bij AC Milan, dat €7.000.000,- voor hem betaalde aan Atalanta Bergamo.[2]
Onder leiding van bondscoach Cesare Prandelli maakte Bonaventura zijn debuut in het Italiaans voetbalelftal op vrijdag 31 mei2013 in een vriendschappelijke interland tegen San Marino (4–0) in Bologna. Hij moest in dat duel na 50 minuten plaatsmaken voor de andere debutant, Marco Sau van Cagliari.[3] Op 23 mei 2016 werd Bonaventura opgenomen in de voorselectie voor het Europees kampioenschap voetbal 2016 in Frankrijk, zonder in de anderhalf jaar daarvoor in het nationaal elftal gespeeld te hebben.[4]