Caratteristiche tecniche Ha fisicità e istinto da centravanti, ma può giocare anche da esterno destro. È abile nei calci di rigore, è un attaccante creativo che sa trovare spazi dove muoversi, riesce a coordinarsi bene con i suoi compagni in fase di costruzione ed è abile nei passaggi. È un buon colpitore di testa, essendo forte nel gioco aereo, oltre che molto rapido palla al piede; sa calciare con entrambi i piedi. Nel suo gioco offensivo si distingue per il ritmo nel movimento e la precisione di tiro.
Carriera Club Nantes e Boulogne Nato a Bondy da una famiglia di origine congolese, cresce nei settori giovanili di Villepinte, Tremblay e ; sempre in quel periodo effettua due provini in Italia con e , senza venire tuttavia tesserato.
Nel 2015 entra a far parte del settore giovanile del , ed a partire dal 2016 viene impiegato nella seconda squadra del club gialloverde militante nel Championnat de France amateur. Il 12 febbraio 2017 riceve la prima convocazione in prima squadra in vista del match di Ligue 1 contro l' ed il 6 giugno seguente firma il suo primo contratto professionistico.
La stagione seguente, pur giocando esclusivamente con le riserve, si avvicina alla prima squadra partecipando agli allenamenti settimanali e prendendo parte ad alcune amichevoli; l'8 giugno 2018 rinnova il proprio contratto fino al 2022.
Il 30 novembre 2018 debutta in prima squadra rimpiazzando Majeed Waris al 68' della trasferta persa 3-0 in casa del ; debutta dal primo minuto il 21 gennaio seguente, nell'incontro di campionato perso 1-0 contro l'. Al termine della sua prima stagione fra i professionisti colleziona 6 presenze, di cui la maggior parte spezzoni di gara, tutte in Ligue 1.
Il 22 agosto 2019 viene ceduto in prestito al fino al termine della stagione; debutta con la nuova squadra otto giorni più tardi nel match di Championnat National vinto 1-0 contro l', mentre il 21 febbraio 2020 realizza la sua prima rete, decisiva per la vittoria di misura contro il . Nel club rossonero si rivela come uno dei giocatori di maggior talento del campionato, contribuendo con 3 reti e 5 assist al raggiungimento del terzo posto in classifica nel torneo terminato anzitempo per via della pandemia di COVID-19.
Rientrato al Nantes si ritaglia fin dalle prime giornate il ruolo di centravanti titolare nella squadra guidata da Christian Gourcuff ed il 18 ottobre 2020 realizza la sua prima rete con i canarini aprendo le marcature nella sfida casalinga vinta 3-1 contro il . Autore di 9 reti ed altrettanti assist in 37 presenze, con il club vive una stagione travagliata terminando il campionato al terzultimo posto ed accedendo di conseguenza ai play-out contro il , vincitore dei play-off di Ligue 2; proprio la sua rete del 2-1 nel match di andata si rivela decisiva per la permanenza del club in massima divisione, nonostante la sconfitta di misura (1-0) nel match di ritorno.
Preso ormai il comando dell'attacco dei canarini, la stagione successiva è complice della vittoria della coppa di Francia contro il , oltre che del nono posto in classifica in campionato. A livello personale, in campionato, contribuisce con 12 reti e cinque assist in 36 presenze, tra cui una doppietta contro il nel 3-2 del 10 novembre 2021 e uno dei tre gol con cui les nantais hanno battuto il 19 febbraio 2022. In coppa è invece protagonista nella sfida dei quarti di finale contro il vinta per 2-0 grazie ad una sua rete ed un suo assist.
Eintracht Francoforte Il 4 marzo 2022 firma un accordo quinquennale, valevole dal 1º luglio successivo, con l'. Conclusa la stagione con il Nantes, si aggrega ufficialmente alla squadra di Francoforte sul Meno, con cui debutta il 5 agosto in occasione della gara di Bundesliga persa 1-6 contro il , in cui segna anche la prima rete con le aquile. Cinque giorni dopo fa il proprio debutto in una competizione europea, giocando da subentrato la finale di Supercoppa UEFA persa per 2-0 contro il .
Dopo il debutto in una competizione confederale europea, debutta in UEFA Champions League nella sconfitta interna per 0-3 contro lo . Nel corso della fase a gironi è decisivo per la qualificazione dei die Adler alla fase successiva, la prima da quando la competizione ha assunto l'attuale denominazione: il 26 ottobre segna una rete - la sua prima in campo europeo - nella vittoria contro il ; mentre la settimana successiva segna il gol decisivo nella vittoriosa trasferta contro lo Sporting Lisbona (1-2).
Il 7 febbraio 2023 segna la prima doppietta in coppa di Germania ai danni del (4-2) e il 18 dello stesso mese, raggiunge anche la doppia cifra in campionato, nella gara casalinga vinta 2-0 contro il . Il 21 febbraio gioca gli ottavi di Champions League di andata contro il , venendo espulso - prima volta in carriera - al 58' minuto per un pestone ai danni di Zambo Anguissa, sul punteggio di 1-0 per i partenopei. Conclude la sua prima stagione in Bundesliga segnando nel totale 15 gol e fornendo 11 assist, diventando il terzo miglior realizzatore del campionato e il secondo miglior assistman. A fine stagione verrà inserito nei candidati al Pallone d'oro arrivando 28º.
Il 29 agosto 2023, in un'intervista per Sky Deutschland, dichiara pubblicamente che il ha fatto un'"offerta record" per ingaggiarlo e manifesta l'intenzione di trasferirsi a Parigi, dopo aver informato i dirigenti dell'Eintracht del proprio desiderio di lasciare il club. Rifiutatosi di allenarsi con il club tedesco, viene escluso dalla rosa per la partita di Conference League contro il , ricevendo critiche per il suo comportamento dal direttore sportivo dell'Eintracht, Markus Krösche.
Paris Saint-Germain Il 1º settembre 2023, nel corso dell'ultima giornata della sessione estiva di calciomercato, si trasferisce al per 75 milioni di euro più 15 milioni di bonus. Esordisce con il club parigino il 15 settembre, nella sconfitta per 3-2 in casa del . Quattro giorni dopo sigla il proprio debutto in Champions League con il club francese, nella gara vinta per 2-0 ai danni del . Il 24 settembre segna il suo primo gol con il PSG, nella vittoria per 4-0 nel classique contro l'. Chiude l'annata 2023-2024 aggiudicandosi campionato, Coppa di Francia e Supercoppa di Francia, non convincendo però le aspettative.
Inizia la stagione seguente giocando da titolare la gara contro il neopromosso , in cui segna la rete del definitivo 4-1 al minuto 90. Tuttavia, il rendimento del francese stenta a decollare, venendo a più riprese escluso dalla lista dei convocati dal tecnico Luis Enrique.
Prestiti alla Juventus e al Tottenham Il 23 gennaio 2025 viene ceduto in prestito alla , con cui firma un contratto valido fino al 30 giugno successivo. Debutta da titolare due giorni dopo, nella sconfitta in trasferta per 2-1 contro il , in cui segna la rete del vantaggio allo scadere del primo tempo. Registra la sua prima doppietta in maglia bianconera il 2 febbraio seguente, nella vittoria casalinga sull' (4-1), ripetendosi nella partita successiva, in trasferta contro il , in cui realizza la seconda doppietta consecutiva in Serie A, consentendo ai bianconeri di portare a casa i 3 punti e diventando il primo giocatore a segnare 5 gol nelle prime 3 partite in Serie A. Contribuisce con 8 reti in campionato alla conquista del quarto posto. Confermato per la coppa del mondo per club FIFA 2025, all'esordio segna una doppietta nel successo per 5-0 contro l'Al-Ain.
Il 1º settembre successivo viene ceduto in prestito secco al , in Premier League. Esordisce con gli Spurs il 16 settembre nella prima stagionale in Champions League, giocando da titolare la partita vinta per 1-0 in casa contro il Villarreal. Il 19 ottobre esordisce nella Premer League 2025-2026 nella sconfitta interna contro l'Aston Villa per 1-2. Il 26 novembre segna le sue prime reti con il club inglese proprio contro il Paris Saint Germain in Champions League al Parco dei Principi, realizzando una doppietta e mettendo a referto un assist, nonostante la sconfitta per 3-5.
Juventus Il 2 agosto 2026 torna alla , questa volta a titolo definitivo, con un contratto valido fino al 30 giugno 2031. Fa il suo secondo esordio in bianconero il 23 agosto, nella partita di campionato vinta per 1-0 in casa del Frosinone. Dopo le prime quattro partite in campionato senza segnare, all'esordio dei bianconeri in Europa League contro il N.E.C., partendo da subentrato, fornisce un assist per il 4-0 di Çelik e successivamente sigla il primo gol al suo ritorno in bianconero, che fissa il punteggio sul 5-0.
Nazionale Il 1º ottobre 2020 riceve la prima convocazione da parte della nazionale under-21; debutta l'8 ottobre nel match di qualificazione per gli europei 2021 vinto 5-0 contro il . Nel marzo seguente viene incluso nella lista dei convocati per la prima fase del campionato europeo 2021, dove gioca tutti e tre gli incontri. A causa dell'impegno nei play-out con il Nantes non viene convocato per la fase a finale della competizione venendo rimpiazzato da Arnaud Kalimuendo.
Il 25 giugno 2021 viene convocato per i giochi olimpici di Tokyo 2021; mentre il 15 settembre 2022, riceve la prima convocazione con la nazionale maggiore. Debutta con i bleus il 22 settembre successivo contro l' subentrando nei minuti finali a Kylian Mbappé.
Inizialmente escluso dalla lista dei convocati per il , il 16 novembre viene scelto da Didier Deschamps come sostituto dell'infortunato Christopher Nkunku. Il 30 novembre successivo debutta ad un Mondiale - e per la prima volta da titolare - in occasione dell'ultima gara della fase a gironi persa 1-0 contro la . Non utilizzato per le gare degli ottavi e dei quarti contro e , torna in campo, da subentrato, in occasione della semifinale contro il (vittoria 2-0) segnando anche il primo gol in nazionale. Nell'occasione diventa il terzo giocatore più veloce a segnare un gol da subentrato nella fase finale dei Mondiali, con 44 secondi, succedendo solo a Richard Morales e Ebbe Sand. Il 18 dicembre seguente, subentrato al 40' ad Olivier Giroud, disputa la finale contro l' persa ai tiri di rigore, procurandosi il rigore del momentaneo 2-1, poi realizzato da Kylian Mbappé, fornendo l'assist per il pareggio di quest'ultimo e segnando anche il proprio rigore nella serie finale, trasformazione inutile ai fini del risultato.
Convocato da Deschamps per prendere parte al in Germania, è relegato tra le seconde linee dei bleus, ma prende parte da subentrante a due gare su tre della fase a gironi, mentre agli ottavi di finale contro il propizia l'autogol del belga Jan Vertonghen, decisivo per il passaggio del turno dei francesi. Successivamente va a segno in semifinale contro la , portando i transalpini in vantaggio nella sfida poi persa per 2-1.
Viene convocato per la fase finale della UEFA Nations League 2025 che si svolge in Germania, dove mette a segno una rete nella semifinale contro la Spagna, persa per 5-4, i cui i transalpini chiudono col terzo posto finale.
Statistiche Presenze e reti nei club Statistiche aggiornate al 20 settembre 2026.