Cresciuto nelle giovanili dell', ha esordito nell' per poi giocare nell', nel , con cui ha vinto la Supercoppa di Spagna 2017, la Supercoppa UEFA 2017, la Coppa del mondo per club FIFA 2017 e la UEFA Champions League 2017-2018, e nella ; dal 2019 ha militato per sei stagioni nel , con cui ha vinto un campionato italiano (2021-2022) ed una Supercoppa italiana (2024). Dal 2025 è passato all' con i quali ha vinto una coppa del re dei campioni (2025-2026).
Biografia Di origini spagnole da parte di padre (il bisnonno paterno era originario di Gerona), è figlio di Jean-François Hernandez, calciatore, e della marsigliese Laurence Py; da parte paterna ha una sorellastra maggiore di nome Lauris ed è fratello minore di Lucas, anch'egli calciatore (in forza al ). I genitori si separano nel 2002, e nel 2004 il padre si trasferisce in Thailandia.
Dal 2020 è legato sentimentalmente alla modella e influencer italiana Zoe Cristofoli. La coppia ha un figlio, Theo Jr., nato il 7 aprile 2022 ed una figlia, Cloe Marie, nata esattamente tre anni dopo la nascita di Theo Jr.
Caratteristiche tecniche Si distingue per velocità, forza fisica ed ottima tecnica individuale. Abile nel dribbling, soprattutto in progressione, è solito partire palla al piede in contropiede per proiettarsi in attacco. Per via delle continue proiezioni offensive tipiche del suo stile di gioco risulta molto prolifico in zona gol, anche grazie al potente tiro di cui è in possesso.
Inizialmente criticato per le sue scarse attitudini difensive, ha migliorato col tempo le abilità in fase di copertura, affermandosi come uno dei migliori terzini della sua generazioneI 25 terzini sinistri migliori del mondo. Ha inoltre occasionalmente ricoperto il ruolo di difensore centrale, evidenziando buone doti ed affidabilità anche in quel ruolo. Sotto la guida del tecnico Stefano Pioli ha accentrato il proprio raggio d'azione; non è insolito, infatti, trovarlo nelle zone centrali del campo con il compito di portare superiorità numerica nella zona.
Carriera Club Esordi e Alavés Dopo aver iniziato nel vivaio del , cresce calcisticamente nelle giovanili dell', dove entra all'età di 9 anni, nel 2007. Dopo aver compiuto la trafila nelle giovanili del club, nell'estate del 2015 passa all'Atlético Madrid B. Debutta in Tercera División, la quarta divisione spagnola, il 30 agosto 2015 in -Atlético Madrid B (3-4). Rinnovato il proprio contratto il 3 febbraio 2016, due giorni dopo viene convocato per la prima volta in prima squadra per la partita di Primera División contro l', rimanendo in panchina.
Il 4 agosto 2016 passa in prestito annuale all', neopromosso in Primera División. Esordisce alla seconda giornata di campionato, il 28 agosto contro lo ; in totale disputa 38 partite di campionato, con 2 gol all'attivo. Il 7 maggio 2017 segna la prima rete in carriera, nella gara vinta per 1-0 contro l'. Va a segno anche nella finale di Coppa del Re 2016-2017, persa per 1-3 contro il .
Real Madrid e Real Sociedad
Il 5 luglio 2017 è acquistato dal , che paga la clausola di 30 milioni prevista dal contratto. Prima ancora di esordire, l'8 agosto inizia la sua avventura con la squadra della capitale conquistando la Supercoppa UEFA nell'incontro vinto 2-1 contro il Manchester United. Esordisce in stagione con il Real il 16 agosto, sostituendo Marco Asensio nella vittoria casalinga per 2-0 contro il Barcellona nella Supercopa de España. Disputa tre partite nella Champions League 2017-2018, competizione nella quale è un esordiente assoluto, aiutando il club a vincere il suo terzo titolo consecutivo nonché il 13º assoluto nella competizione. Conclude la sua prima, nonché unica, annata con il Real Madrid con tre trofei e 23 presenze in tutte le competizioni, senza mai andare a segno.
Il 10 agosto 2018 è ceduto in prestito alla , dove gioca per una stagione, Esordisce con la sua nuova squadra nella prima partita del campionato, nella vittoria per 1-2 contro il Villarreal. Alla quinta giornata viene squalificato per 4 partite dopo aver dato una testata al giocatore dell'Huesca Damián Musto. Il 9 novembre segna il suo primo gol con la maglia dei txuri-urdin nella vittoria esterna per 1-3 contro il Levante. Al termine della stagione totalizza 24 partite realizzando un gol.
Milan L'affermazione e la vittoria dello scudetto (2019-2022)
Il 6 luglio 2019 si trasferisce al a titolo definitivo per 20 milioni di euro e firma un contratto quinquennale. Il debutto con i rossoneri ed in Serie A avviene il 21 settembre successivo, quando subentra a Ricardo Rodríguez al 46º minuto del derby perso per 0-2 dimostrando immediatamente le proprie qualità offensive colpendo, appena entrato, un palo. Esordisce da titolare nella partita successiva, persa per 2-1 in trasferta contro il , e trova in seguito il primo gol in maglia rossonera il 5 ottobre, in occasione della gara vinta per 2-1 in casa del . Nella prima parte della stagione mette in mostra un ottimo rendimento, affermandosi come uno dei terzini più forti della Serie A, con 5 reti che, a gennaio, gli permetteranno di essere provvisoriamente il capocannoniere della squadra rossonera. Chiuderà la stagione con 7 gol totali all'attivo ed emergendo come uno dei migliori giocatori a disposizione di Stefano Pioli.
La stagione successiva lo vede realizzare, il 13 dicembre 2020 a San Siro, la sua prima doppietta in carriera, decisiva per assicurare il pareggio (2-2) nel match di campionato contro il con entrambi i gol arrivati nei minuti finali. Il 18 febbraio 2021 mette a referto il suo primo gol in campo internazionale come professionista, segnando il rigore del momentaneo vantaggio per 1-2 nella partita dei sedicesimi di finale di Europa League contro la , anch'essa terminata sul punteggio di 2-2. Chiude la sua seconda stagione in rossonero con 33 presenze e 7 goal in campionato conditi da 5 assist.
Nel corso dell'annata seguente Theo si conferma uno dei giocatori chiave della squadra. Il 6 gennaio 2022 indossa per la prima volta la fascia di capitano del Milan, in occasione di Milan- (3-1), valida per la prima giornata del girone di ritorno del campionato di Serie A. L'11 febbraio 2022 viene ufficializzato il suo rinnovo con il Milan fino al 2026 per 4,5 milioni annuali. Tra le stelle milaniste della seconda parte di stagione, nella vittoria per 2-0 contro Atalanta del 15 maggio 2022 realizza una pregevole marcatura – premiata come gol dell'anno dalla Serie A – in cui, dopo essere partito dalla propria area di rigore, percorre tutto il campo, supera in velocità un paio di avversari e deposita il pallone in rete. Con il Milan vince il campionato segnando 5 gol e fornendo 6 assist in 32 presenze e risultando tra i protagonisti della stagione dei rossoneri.
I gradi di vice-capitano e la vittoria in Supercoppa (2022-2025)
Nella stagione 2022-2023, a seguito della partenza di Alessio Romagnoli e il conseguente passaggio della fascia di capitano a Davide Calabria, viene nominato vice-capitano. Il 18 gennaio 2023, gioca da titolare la Supercoppa italiana contro l'Inter, persa per 3-0. In quest'annata dimostra a pieno la maturità acquisita nel corso degli anni, che lo porta a dosare le incursioni sulla fascia per essere sempre preciso in fase difensiva. Nel corso dell'annata viene impiegato anche come quinto di sinistra nel 3-4-2-1 di Pioli.
Continua a ricoprire il ruolo di vice-capitano o, spesso, di capitano in assenza di Calabria anche nella stagione seguente. Il 2 dicembre 2023, a causa di una serie di infortuni che hanno colpito i difensori centrali del Milan, si offre volontario per giocare al centro della retroguardia per la prima volta nella sua carriera, ricevendo anche molti elogi dai media calcistici per la sua prestazione nella vittoria 3-1 contro il Frosinone. Il 22 aprile 2024, nel derby perso 2-1 contro l’Inter, riceve la prima espulsione in stagione in seguito ad una rissa scatenata con Denzel Dumfries. Con 5 gol in 32 presenze, contribuisce al raggiungimento del secondo posto finale dei rossoneri.
Nella prima parte della stagione 2024-2025 è protagonista di alcuni episodi controversi: il 31 agosto, nella partita pareggiata per 2-2 a Roma contro la Lazio, decide assieme a Rafael Leão di non unirsi alla squadra durante un cooling break per motivi correlati a dei dissidi con l'allenatore Paulo Fonseca, mentre il 6 ottobre 2024, nel match disputato a Firenze contro la Fiorentina, conclusosi con una sconfitta per 2-1 per il Milan e in cui fallisce un rigore, viene espulso nel post-partita per una discussione con l'arbitro Pairetto. Per l'accaduto riceve una squalifica di due giornate e, per i suddetti problemi disciplinari, viene sanzionato dalla società rossonera. Il 6 gennaio 2025 vince la Supercoppa italiana con i rossoneri, siglando su calcio di punizione il gol che avvia la vittoria in rimonta nella finale contro l'Inter. Il 14 gennaio, andando in gol nella vittoria per 2-1 in casa del , diviene il difensore del Milan con più marcature in Serie A, raggiungendo le 30 reti con la maglia rossonera e battendo così il precedente record di Paolo Maldini. Il 18 febbraio, nel ritorno del play-off di Champions League contro il , un suo cartellino rosso per doppia ammonizione è decisivo per l'eliminazione del Milan dalla competizione.
Conclude la sua esperienza rossonera dopo 262 presenze e 34 reti complessive.
Al-Hilal Il 10 luglio 2025 viene acquistato a titolo definitivo dall', squadra della Saudi Pro League, con cui sottoscrive un accordo fino al 30 giugno 2028.
Segna i suoi primi goal nei gironi di Afc Champions League, andando in goal contro l'Al Duhail e contro il Nasaf Qarshi. L'otto maggio 2026 vince il suo primo trofeo, la King's Cup, nella finale per 2-1 contro l'Al-Kholood dove segna il goal decisivo. Termina la sua prima stagione in Saudi Pro League al secondo posto da imbattuto, con 5 goal in 31 presenze.
Nazionale Ha giocato con le nazionali francesi Under-18, Under-19 e Under-20.
Nel 2017 rifiuta la convocazione della nazionale francese Under-21, affermando di volersi concentrare sull'imminente trasferimento al , salvo poi pubblicare delle foto che lo ritraggono in vacanza a Marbella. In seguito a tale controversia, inizialmente non è stato convocato dalla nazionale maggiore francese e ha dichiarato di voler considerare un'eventuale chiamata della nazionale maggiore spagnola.
Il 26 agosto 2021 riceve dal CT Didier Deschamps la sua prima convocazione nella nazionale francese e il 7 settembre dello stesso anno debutta con la maglia dei bleus nella partita casalinga contro la (2-0), valevole per le qualificazioni al . Il 7 ottobre 2021 realizza il suo primo gol in nazionale, siglando il definitivo 3-2 nella semifinale di UEFA Nations League vinta in rimonta contro il all'Allianz Stadium di Torino. Tre giorni più tardi si aggiudica il trofeo, fornendo l'assist per il gol di Mbappé che completa la rimonta dei bleus nella vittoriosa finale di Milano contro la Spagna.
Partecipa poi al in Qatar. Nel torneo si ritaglia un posto da titolare dopo l'infortunio occorso al fratello Lucas nella prima giornata del girone, disputando quindi tutte le partite fino alla finale persa ai rigori contro l'. Convocato anche per il , disputa tutte le partite della Francia, che si ferma in semifinale.
Viene confermato in rosa da Didier Deschamps che lo convoca ai Mondiali 2026.
Statistiche Presenze e reti nei club Statistiche aggiornate al 7 luglio 2026.