Centrocampista duttile,[2][3] esibisce una notevole mobilità in vari settori difensivi ed offensivi.[4] Ricopre generalmente la posizione dimezzala,[5] ma può agire anche daala sinistra otrequartista.[6] Dotato di ottima tecnica individuale e buona velocità, è abile nel dribbling, nel colpo di testa ed è anche un buon tiratore dalla distanza e di calci piazzati. È inoltre solito utilizzare il piede sinistro grazie al quale riesce ad effettuare ottimi tiri nonostante sia un destro naturale.[7]
Nasce calcisticamente alla Virtus Castelvecchio e, dopo aver militato nei settori giovanili della San Francesco '93 diCingoli e della Settempeda[8] fino aiGiovanissimi, si trasferisce alTolentino; qui viene notato daAntonio Bongiorni, osservatore dell'Atalanta e ds della Polisportiva Margine Coperta diMassa e Cozzile (PT), società-satellite degli orobici in Toscana, che lo tessera. Viene poi chiamato daMino Favini, responsabile del settore giovanile nerazzurro, che lo porta direttamente nella sede diZingonia, il "Centro Bortolotti".[9]
Debutta inSerie A il 4 maggio 2008, nel corso della partita Atalanta-Livorno (3-2), che sarà anche l'unica apparizione stagionale.
La stagione successiva lo vede aggregato in pianta stabile con la prima squadra, e dopo una presenza la società opta per un prestito nelle categorie inferiori durante il mercato di riparazione invernale. Viene quindi ceduto in prestito alPergocrema, società diPrima Divisione. Il 18 gennaio 2009 fa il suo esordio nella categoria, siglando la rete del provvisorio pareggio, nel corso della partita contro laSambenedettese, incontro che terminerà con il punteggio di 2-1 in favore dei padroni di casa; si tratta del suo primo gol fra i professionisti. Nella squadracremasca è titolare, ma è costretto a fermarsi dopo poche partite a causa di un infortunio che comprometterà gran parte della stagione.[10]
Nel corso dell'estate 2009 fa ritorno a Bergamo, dove non riesce a ritagliarsi spazi nella formazione titolare: nella sessione invernale del calciomercato viene quindi ceduto in prestito alPadova.[11] Il 20 febbraio 2010 debutta con ibiancoscudati nella partitaAncona-Padova (2-2). Alla fine del primo anno ottiene la salvezza in Serie B, dopo iplay-out contro laTriestina, nei quali segna anche un gol.[12]
Bonaventura in allenamento con l'Atalanta nel 2013
Il 23 giugno 2010 il Padova comunica di non aver esercitato il diritto di opzione sul cartellino di Bonaventura[13] che ritorna quindi all'Atalanta. Il 16 luglio seguente rinnova il contratto con la società bergamasca fino al 2015.[14] Disputa la stagione nell'inedito ruolo di esterno di centrocampo (sia destro che sinistro), venendo impiegato anche qualche volta come trequartista alle spalle degli attaccanti. Segna il suo primo gol con la maglia nerazzurra il 9 novembre contro ilModena (1-0).[15] Bonaventura va a segno in altre otto circostanze, risultando essere l'uomo più decisivo della stagione atalantina, portando alla causa nerazzurra 18 punti.[16][17] Conclude la stagione con 33 presenze (31 in campionato e 2 in Coppa Italia) condite da 9 gol e con la vittoria del campionato cadetto.
L'11 aprile 2012 segna il suo primo gol inSerie A nella vittoria esterna della sua squadra contro ilNapoli. Si ripete tre giornate dopo, il 29 aprile, realizzando la rete del 2-0 chiudendo la sfida casalinga contro la Fiorentina (2-0) che vale la salvezza per l'Atalanta con tre giornate d'anticipo.[18] La sua prima stagione da titolare in Serie A si chiude con 2 reti in 29 partite.
Nellastagione 2012-2013 ormai è uno dei punti fermi della formazione lombarda, tanto da risultare il secondo miglior marcatore dietro aGermán Denis. La sua prima doppietta in carriera in Serie A è datata 3 marzo 2013, quando fissa il risultato nella partita Siena-Atalanta (0-2) della 27ª giornata. Al termine della stagione, conclusasi con una nuova salvezza per laDea, Bonaventura ha realizzato 8 reti in 36 partite, di cui uno in una gara diCoppa Italia.
Lastagione 2013-2014 si rivela essere per lui l'ultima tra le file dellaDea, che termina la stagione con la terza salvezza consecutiva, con Bonaventura che realizza 5 reti in 31 partite diSerie A. Conclude quindi la sua esperienza in neroazzurro dopo otto anni (inclusi quelli trascorsi in prestito e nelle giovanili), durante i quali ha messo a segno 24 reti in 135 partite considerando Serie A,Serie B eCoppa Italia.
Nell'estate 2014, durante le ultime ore di mercato, viene acquistato dalMilan per 7 milioni di euro.[19] Il direttore sportivo del club lombardoAdriano Galliani decise di puntare su Bonaventura dopo che saltò la trattativa perJonathan Biabiany.[19] Va in gol con i rossoneri già al debutto, il 14 settembre 2014, segnando nella vittoria esterna contro ilParma (4-5).[20] Esordisce inCoppa Italia con il Milan il 13 gennaio 2015, nella vittoria casalinga contro ilSassuolo (2-1) che vale ai rossoneri il passaggio del turno ai quarti di finale.[21] Nell'ultima giornata dicampionato realizza la sua prima doppietta, decisiva per il successo (3-1) contro la sua squadra precedente, l'Atalanta.[22] Il giocatore, autore di 7 reti in 34 presenze complessive, risulta una delle poche note liete per la formazione, incappata in una stagione deludente che si chiude con la mancata partecipazione allecoppe continentali.[23]
Nellastagione 2015-2016 totalizza 7 reti e 8 assist in 39 presenze tra tutte le competizioni con i rossoneri, piazzatisi settimi in classifica e, pertanto, ancora esclusi dall'Europa. Il 1º dicembre 2015, nella gara casalinga contro ilCrotone (3-1) valida per gli ottavi di finale diCoppa Italia, sigla il primo gol in questa competizione con la maglia rossonera.[24] Con il Milan, il 22 maggio 2016, raggiunge la finale di coppa nazionale, la prima della sua carriera, gara persa 1-0 contro laJuventus e che Bonaventura ha disputato per intero.[25]
Bonaventura con la maglia del Milan contro ilBayern Monaco nel precampionato 2016.
Nellastagione successiva, a seguito del ritiro diMexès, cambia numero di maglia, passando dalla 28 alla 5.[26] Il 23 dicembre 2016 si aggiudica laSupercoppa italiana, con il Milan che batte ai rigori proprio i bianconeri: Bonaventura segna il gol del pareggio, trasformando anche un rigore della sequenza finale.[27] La sua annata termina in anticipo, a causa di un infortunio alla coscia riportato nella gara con l'Udinese a fine gennaio[28] nella quale sigla l'unica rete del Milan. Ritorna in prima squadra il 28 maggio per l'ultima gara della stagione persa contro ilCagliari (2-1), senza però riuscire ad entrare a partita in corso.[29] Conclude la sua terza stagione con il Milan con 5 reti siglate in 22 partite in tutte le competizioni.
Il 27 luglio 2017 esordisce nelle manifestazioni continentali, giocando contro ilU Craiova inEuropa League;[30] la settimana seguente trova il primo gol in campo internazionale, andando a segno nel 2-0 del ritorno.[31] Il successivo 20 settembre, in occasione dell'incontro contro laSPAL, viene premiato per la centesima presenza in rossonero.[32] Il 21 gennaio 2018, nella trasferta vinta per 2-1 in casa del Cagliari, raggiunge quota 200 partite in Serie A.[33] Il 28 febbraio, nella semifinale di ritorno diCoppa Italia, sigla uno dei rigori che consentono al Milan di disputare la finale del 9 maggio seguente contro la Juventus.[34] Nell'atto conclusivo della competizione i rossoneri sono usciti sconfitti per 4-0, con Bonaventura che ha giocato la partita per intero.[35] Al termine di una deludente annata per i rossoneri, Bonaventura si rivela essere uno degli elementi migliori della squadra, concludendo la stagione come terzo miglior marcatore con 9 reti in 47 incontri complessivamente (di cui 8 in 33 presenze in Serie A).
Il 7 ottobre 2018, nella gara casalinga vinta per 3-1 controChievo, conquista il traguardo delle 150 partite con il Milan in tutte le competizioni.[36] Dopo un ottimo inizio distagione, il 27 ottobre subisce una lesione al ginocchio sinistro, che lo vede costretto a sottoporsi a un'operazione chirurgica pochi giorni dopo.[37] Pertanto conclude anticipatamente la suaquinta stagione con i rossoneri, totalizzando 3 gol in 10 presenze complessive.[38]
Torna a pieno regime nellastagione 2019-2020, caratterizzata dall'avvicendamento in panchina traMarco Giampaolo eStefano Pioli. Il 22 giugno raggiunge le 150 partite in Serie A in maglia rossonera[39] nella partita vinta in casa delLecce per 4-1, gara nella quale trova anche il gol del momentaneo 2-1.[40] Non venendo rinnovato il suo contratto in scadenza,[41] disputa la sua ultima partita con i rossoneri il 1º agosto 2020, subentrando aRafael Leão al 38' del primo tempo dell'ultima partita di campionato vinta in casa contro il Cagliari (3-0), gara nella quale ha anche servito l'assist del terzo gol aSamu Castillejo.[42][43] Ottiene 29 presenze e 3 reti nelcampionato che il Milan chiude al 6º posto. Complessivamente, in sei anni al Milan, ha disputato 184 partite segnando 35 reti in tutte le competizioni ed ha conquistato unaSupercoppa italiana nel 2016.
Dopo essersi svincolato dal Milan, il 10 settembre 2020 viene ingaggiato dallaFiorentina.[44] Realizza la sua prima rete con i viola il 23 gennaio 2021 nel successo per 2-1 contro ilCrotone.[45] In chiusura di stagione va a segno altre due volte, nelle trasferte contro Sassuolo e Bologna, aiutando la squadra a centrare la salvezza in anticipo.[46] Tre reti in 34 presenze sono lo score della sua prima stagione a Firenze.
Nellastagione seguente, continua a giocare regolarmente da titolare, fornendo ottime prove[47], tanto da raggiungere il rinnovo automatico del contratto fino al 2023.[48][49] Chiude il girone d'andata andando a segno due volte, contro Genoa[50] eSalernitana.[51] Nel girone di ritorno segna ancora contro il Genoa,[52] mentre un infortunio rimediato nel mese di marzo contro il Bologna[53] lo costringe a uno stop di circa un mese. Tornato in campo il 27 aprile nella sconfitta casalinga contro l'Udinese,[54] risulta decisivo per la qualificazione europea realizzando il definitivo 2-0 contro la Roma[55] nella partita del 9 maggio giocata alFranchi.[56] Termina l'anno con 4 gol e 9 assist in 35 presenze,Coppa Italia compresa.
Confermato da titolare anche per l'annata 2022-2023, segna il primo gol stagionale della Fiorentina aprendo le marcature nella prima giornata di campionato contro laCremonese.[57] Si ripete, risultando sempre decisivo, tra il 6 il 9 novembre, andando in rete rispettivamente contro Sampdoria[58] e Salernitana.[59] In virtù del suo ruolo sempre più importante nel gioco del tecnicoItaliano,[60] nel gennaio del 2023 Bonaventura rinnova il proprio contratto con la Fiorentina fino al 2024, con un'opzione per un'ulteriore stagione.[61][62] Il 23 febbraio 2023, il centrocampista serve tutti e tre gli assist decisivi (rispettivamente, aMandragora,Saponara eCabral) della vittoria per 3-2 dei viola sulBraga,[63] nella gara di ritorno dei play-off diConference League, successo che consente loro di qualificarsi per gli ottavi di finale.[64][65] Il 1º aprile la sua rete permette ai viola di vincere a San Siro contro l'Inter,[66] mentre nella gara di andata dei quarti di finale di Conference League contro ilLech Poznan realizza il primo gol internazionale in maglia viola.[67] Nellafinale di Conference League disputata il 7 giugno aPraga contro ilWest Ham, realizza il gol del pareggio dopo il vantaggio deilondinesi, ma la gara viene persa per 2-1.
Il 12 novembre 2023, segnando contro il Bologna il momentaneo gol dell'1-0, raggiunge il traguardo delle 100 partecipazioni a reti in Serie A (61 reti e 39 assist). Mette a referto otto reti lungo tutto ilcampionato. A finestagione, lascia la Fiorentina alla scadenza naturale del proprio contratto, dopo aver messo insieme 162 presenze, 22 gol e 22 assist in quattro annate con il club viola.[68][69]
Il 5 agosto 2024, passa a parametro zero all'Al-Shabab, squadra dellaSaudi Professional League, con cui sottoscrive un contratto annuale, con opzione per un'altra stagione.[70][71]
Nel 2008, con lanazionale Under-19 diFrancesco Rocca, partecipa all'Europeo di categoria. Debutta il 14 luglio 2008 nella partita d'esordio del torneo contro laGrecia, disputando da titolare tutte e 3 le partite del girone e la semifinale vinta contro l'Ungheria, subentrando invece nella finale persa per 3-1 contro laGermania.[72] Segna la prima rete in nazionale nel corso della stessa manifestazione, il 20 luglio 2008, siglando il gol del momentaneo 2-1 nel corso della terza partita del girone eliminatorio contro laRep. Ceca, incontro vinto dagliAzzurrini con il punteggio di 4-3.
Nel 2009 partecipa aiGiochi del Mediterraneo con lanazionale Under-20. Il 25 giugno debutta al 57' nel corso dell'incontro pareggiato con laSiria,[73] partita d'esordio per gliAzzurrini diFrancesco Rocca. Il secondo e già decisivo incontro del torneo lo vede titolare nel successo contro laGrecia,[74] che proietta la squadra verso la vittoriosa semifinale contro laLibia,[75] dove subentra nella ripresa. Giacomo parte titolare nella finale contro laSpagna,[76] incontro perso per 2-1.
Sempre nel 2009 partecipa alcampionato mondiale di categoria con la nazionale Under-20, disputando tutte le partite e andando a segno nella partita dei Quarti di finale contro l'Ungheria (2-3).
Il 28 agosto 2010 viene convocato per la prima volta innazionale Under-21 per le gare di qualificazione delCampionato europeo del 3 e 7 settembre, senza scendere in campo.[77]
Il 27 marzo 2011 viene convocato dal tecnicoMassimo Piscedda nell'Italia B per la gara amichevole contro la Rappresentativa dellaPrva Liga Srbija. Bonaventura esordisce dal primo minuto e al 6' va in rete portando la B-Italia in vantaggio (la partita finirà 2-0 per gli azzurri).[78]
Ritorna nel giro azzurro con il CTRoberto Mancini, che lo convoca all'inizio della sua gestione nel maggio 2018,[84] e lo impiega anche nelle prime due gare disputate dall'Italia nellaNations League. Il 7 ottobre 2020 torna a giocare in nazionale, da titolare, nell'amichevole contro laMoldavia disputata a Firenze.[85]
Nell'ottobre del 2023, a tre anni dall'ultima convocazione, viene richiamato dal CTLuciano Spalletti, in vista delle partite diqualificazione all'Europeo 2024 controMalta eInghilterra.[86] Proprio contro i maltesi, il 14 ottobre 2023, realizza la sua prima rete in maglia azzurra, contribuendo al successo per 4-0 dell'Italia;[87][88] diventando, a 34 anni, il giocatore italiano più anziano a segnare la propria prima rete in nazionale.[89]