Nato come centrocampista inizia a ricoprire, a partire dal settore degli Allievi, il ruolo di terzino destro, nonostante sappia destreggiarsi anche sulla fascia sinistra. Calabria è un terzino che ha nelle caratteristiche fisiche il suo punto di forza; è infatti un giocatore molto veloce, più sul lungo che nel breve in cui soffre i giocatori bassi e rapidi, e soprattutto molto resistente, sua caratteristica chiave. Grazie a ciò, e anche grazie alla sua grinta, è un giocatore che all'occorrenza può ricoprire più ruoli: molte volte ha ricoperto il ruolo di terzino sinistro; è stato occasionalmente utilizzato come mezzala o mediano.[2]
È un giocatore molto intelligente a livello tattico; nel corso della carriera ha peccato in continuità a causa di infortuni che ne hanno impedito un completo sviluppo, che ha quindi tardato di qualche anno.[3][4] A seguito di ciò è stato soprannominato dai suoi tifosi con l'appellativo di Frisbee o Boomerang; tale appellativo gli fu attribuito per la prima volta dal telecronista Carlo Pellegatti.
Carriera
Club
Inizi
Muove i primi passi su di un campo di calcio all'età di sei anni, nella Virtus Adrense, società di Adro (suo paese d'origine, in provincia di Brescia), dove rimane per cinque stagioni.
Milan
Settore giovanile e gli inizi al Milan (2014-2017)
Dopo vari provini, tra cui anche presso il Brescia e l'Atalanta, a undici anni Calabria passa al Milan, debuttando nella categoria Esordienti.[2] Esordisce in prima squadra e in Serie A il 30 maggio 2015, all'età di diciotto anni, quando viene impiegato da Inzaghi durante la partita Atalanta-Milan (1-3), valida per l'ultima giornata della stagione 2014-2015.[5] Scende in campo con la maglia n. 96, suo anno di nascita.[6]
Nella stagione 2015-2016 viene inserito nella rosa della prima squadra a disposizione del nuovo tecnico Siniša Mihajlović. Ottiene la sua seconda presenza il 19 settembre 2015 nella partita Milan-Palermo (3-2), sostituendo Ignazio Abate, infortunatosi nel primo tempo.[7] Scende in campo per la prima volta da titolare il 22 settembre successivo, nella partita Udinese-Milan (2-3) disputata allo Stadio Friuli.[8] Chiude la stagione con un totale di sei presenze in Serie A e due in Coppa Italia, tra cui la finale persa 1-0 ai supplementari contro la Juventus, nella quale scende in campo da titolare come terzino destro.[9]
Il 23 dicembre 2016 ottiene il suo primo trofeo da professionista, la Supercoppa italiana disputatasi a Doha e vinta 4-3 ai rigori contro la Juventus, partita alla quale tuttavia non prende parte a causa di un infortunio.[10] Chiude la stagione con dodici presenze in campionato e una in Coppa Italia.
L'affermazione e la conquista dello scudetto (2017-2022)
All'inizio della stagione 2017-2018, dopo la partenza di De Sciglio, cambia numero di maglia, prendendo il numero 2.[6] Il 24 agosto 2017 fa il suo esordio nelle coppe europee, giocando titolare nella partita di ritorno del turno di play-off di Europa League disputata a Skopje e vinta 1-0 contro lo Škendija.[11] Il 14 dicembre rinnova con il club rossonero fino al 2022.[12] Il 25 febbraio 2018, alla ventiseiesima giornata di campionato, segna il suo primo gol in maglia rossonera, realizzando la rete del definitivo 2-0 nella vittoria del Milan contro la Roma all'Olimpico.[13] In questa stagione viene impiegato con continuità dall'allenatore Gennaro Gattuso, ottenendo trenta presenze complessive in tutte le competizioni, e disputa da titolare la finale di Coppa Italia, persa 4-0 contro la Juventus.[14]
Nella stagione successiva viene spesso preferito ad Abate e a Conti come terzino destro titolare. Il 25 agosto 2018 segna il suo secondo gol in Serie A con la maglia del Milan nella gara persa per 3-2 contro il Napoli al San Paolo.[15] Nel gennaio 2019 disputa la sfida di Supercoppa italiana, persa 1-0 contro la Juventus a Gedda.[16] Termina la stagione con ventisei presenze in Serie A.
Durante l'intera stagione 2019-2020 si alterna con Conti sulla fascia destra, ottenendo venticinque presenze in campionato. Torna al gol in Serie A il 18 luglio 2020, quasi due anni dopo l’ultima volta, in occasione della vittoria per 5-1 a San Siro contro il Bologna.[17]
Ricevuta piena fiducia dal tecnico Stefano Pioli, diventa titolare fisso nella stagione 2020-2021 ed il 29 novembre 2020, nella gara casalinga vinta per 2-0 contro la Fiorentina, raggiunge le cento partite in Serie A con i rossoneri.[18] Il 19 marzo 2021 viene operato per risolvere una lesione al menisco mediale del ginocchio destro.[19] Questa si rivela essere la stagione dell'exploit per Calabria, che, con 32 presenze e 2 reti, fornisce al Milan un contributo importante per il raggiungimento del secondo posto in Serie A e, quindi, per la qualificazione in Champions League dopo sette anni.[20]
Il 9 luglio 2021 rinnova il suo contratto con il club rossonero fino al 2025.[21] Nella stagione 2021-2022, dopo la partenza di Gianluigi Donnarumma, diventa il vice-capitano dietro a Romagnoli. Nella prima partita stagionale in Serie A, la vittoria in trasferta conto la Sampdoria (0-1), indossa per la prima volta in gare ufficiali la fascia da capitano fornendo anche un assist a Brahim Díaz.[22] Il 15 settembre esordisce in Champions League, ad Anfield, nella gara della fase a gironi persa 3-2 in casa del Liverpool. Il 22 maggio 2022, grazie alla vittoria esterna per 3-0 sul Sassuolo, può festeggiare la vittoria del campionato, il suo secondo trofeo vinto da professionista.[23]
Capitano del Milan (2022-)
All'inizio della stagione 2022-2023, con la partenza di Alessio Romagnoli, viene promosso a capitano della squadra.[24] Il 14 gennaio 2023 segna la sua prima rete in stagione, realizzando il gol del 2-2 in campionato contro il Lecce.[25] Quattro giorni dopo disputa la finale di Supercoppa italiana persa 3-0 contro l'Inter a Riad.[26] Il 29 gennaio 2023, in occasione della gara casalinga contro il Sassuolo (2-5), raggiunge le 200 presenze in rossonero in tutte le competizioni.
Nella stagione 2023-2024 si conferma un titolare stabile della formazione rossonera totalizzando 41 presenze e un gol in tutte le competizioni, realizzato nell’ultima partita di campionato contro la Salernitana (3-3).
Nella stagione seguente, con l’arrivo di Paulo Fonseca in panchina, il posto di terzino destro titolare viene occupato maggiormente dal nuovo acquisto Emerson Royal.[27] Nonostante lo spazio limitato, il 3 dicembre 2024 realizza il suo primo gol in Coppa Italia, e in stagione, nel 6-1 casalingo contro il Sassuolo. Il 6 gennaio 2025, grazie alla vittoria per 3-2 contro l’Inter a Riad, si aggiudica con i compagni la Supercoppa italiana 2024, la seconda da quando milita nel Milan dopo quella del 2016; inoltre, per la prima volta, solleva un trofeo da capitano dei rossoneri.
Dopo aver ricoperto il ruolo di titolare dell'Under-21 durante tutto il biennio successivo, salta la convocazione per l'Europeo Under-21 2019 a causa di un infortunio rimediato sul finire di stagione.[33]
Nazionale maggiore
Il 9 aprile 2017 è convocato dal CT Gian Piero Ventura in occasione di un raduno stagionale per i calciatori emergenti svolto a Coverciano.[34]
Viene convocato per la prima volta in nazionale dal CT Roberto Mancini in occasione delle partite in programma nel novembre 2020.[35] Esordisce in nazionale l'11 novembre 2020, all'età di ventitré anni, entrando al posto di D'Ambrosio nel secondo tempo della partita amichevole vinta 4-0 contro l'Estonia a Firenze.[36]
Il 3 ottobre 2021 viene inserito tra i 23 convocati per la fase finale della UEFA Nations League, in sostituzione dell'infortunato Tolói.[37] Scende in campo nella semifinale persa contro la Spagna a San Siro, nel torneo che l'Italia chiude al 3º posto.[38]