De Ketelaere groeit op op een boogscheut van het Jan Breydelstadion. Hij was een talentvolle tennisspeler, tot hij in 2013 deze carrière verruilde voor een voetbalcarrière.[2] De middenvelder begint zijn carrière bij de duiveltjes van eersteprovincialer KFC Varsenare, het kleine blauw-zwart, op drie kilometer van Olympia. Dit is ook de club waar Birger Maertens zijn eerste stappen in het voetbal zette. Op zevenjarige leeftijd gaat De Ketelaere aan de slag bij Club Brugge.[3]
2019–20
De Ketelaere ondertekende zijn eerste profcontract bij Club Brugge op 17 juni 2019.[4] De toen 18-jarige De Ketelaere werd gedurende de voorbereiding op het seizoen 2019/20, net als onder andere Ignace Van der Brempt, regelmatig ingezet door trainer Philippe Clement. De Ketelaere – een linksvoetige offensieve middenvelder wiens stijl weleens wordt vergeleken met die van Hans Vanaken – haalde in augustus en september een aantal keer de selectie bij blauw-zwart.[5] Hij maakte zijn officiële debuut op 25 september 2019 in de 1/16de finales van de Beker van België tegen Francs Borains. Hij speelde de volledige partij, Club Brugge won de wedstrijd met 0–3.[6]
Op 22 oktober 2019 mocht De Ketelaere aantreden in de groepsfase van de UEFA Champions League in de thuiswedstrijd tegen Paris Saint-Germain. Hij mocht centraal op het middenveld de geschorste Ruud Vormer vervangen.[7] Na een uur werd hij naar de kant gehaald voor David Okereke. Club Brugge ging met 0–5 onderuit.[8] Twee weken later mocht De Ketelaere op het veld van Paris Saint-Germain vier minuten voor affluiten Mats Rits aflossen. Club Brugge verloor die wedstrijd met 1–0.[9]
De Ketelaere maakte zijn debuut in de Jupiler Pro League op 22 november 2019. In een thuiswedstrijd tegen KV Oostende viel hij na 76 minuten in voor Hans Vanaken. Club Brugge won de wedstrijd met 2–0.[10] Vier dagen later gaf Clement hem een derde kans in de Champions League: De Ketelaere viel aan de rust in voor Mats Rits, uit bij het Turkse Galatasaray SK. Club Brugge sleepte in extremis een 1–1 gelijkspel uit de brand dankzij Krépin Diatta.[11] Hij viel vervolgens in op Jan Breydel tegen Real Madrid, waartegen Club Brugge op 11 december 2019 met 1–3 verloor. Club Brugge overwinterde en stroomde na Nieuwjaar door naar de UEFA Europa League.[12] De Ketelaere werd in de 1/16de finales tegen Manchester United zowel in de heen- als in de terugwedstrijd gebruikt als invaller. In de heenwedstrijd viel hij in toen de 1-1-eindstand al op het scorebord stond, in de terugwedstrijd (5-0) stond Club Brugge 3-0 in het krijt toen De Ketelaere inviel.[13]
Vanaf de maanden januari en februari 2020 werd De Ketelaere steeds vaker als aanvaller ingezet. Hij werd definitief in de harten gesloten na enkele prestaties die belangrijk waren voor het seizoensvervolg van Club Brugge.[1][14] Op 19 januari 2020 gaf De Ketelaere, die na 74 minuten inviel voor Siebe Schrijvers, de assist voor de winnende treffer van Hans Vanaken tegen RSC Anderlecht (1–2).[15] Op 5 februari 2020 trapte De Ketelaere tegen Zulte Waregem, met zijn eerste doelpunt als profvoetballer, zijn club naar zijn eerste bekerfinale sinds 2016.[16] Op 1 maart 2020 scoorde De Ketelaere zijn eerste doelpunt in de Jupiler Pro League, na drie minuten in de Luminus Arena tegen regerend landskampioen KRC Genk. Club Brugge won de wedstrijd met 1–2.[17]
2020–21
Op 20 oktober 2020 scoorde hij in de Champions League het winnende doelpunt tegen Zenit Sint-Petersburg, zijn eerste in het kampioenenbal.[18] Met 19 jaar en 224 dagen was hij de jongste Belgische doelpuntenmaker ooit voor Club Brugge in de Champions League (te rekenen vanaf de groepsfase).
Op 2 december 2020 scoorde De Ketelaere het openingsdoelpunt in de 3-0 overwinning van Club Brugge tegen Zenit Sint-Petersburg, waardoor ze hun overwintering in Europa veiligstelden.
2021–22
Op 1 december 2021 in de bekerwedstrijd tegen KRC Genk kopte De Ketelaere twee keer een achterstand weg om uiteindelijk na strafschoppen te zegevieren.
Op 12 januari 2022 behaalde De Ketelaere de derde plaats in de Gouden Schoen uitreiking en won hij wel opnieuw de trofee 'Belofte van het jaar'.
Op 15 mei 2022 vierde De Ketelaere op het veld van Antwerp met Club Brugge een derde landstitel op rij.
AC Milan
Begin augustus 2022 tekende De Ketelaere op 21-jarige leeftijd een contract van vijf jaar bij de Italiaanse topclub AC Milan. Technisch directeur Paolo Maldini, trainer Stefano Pioli en sportief directeur Frederic Massara helemaal overtuigd van zijn potentieel. De Serie A kampioen van 2021/22 betaalde een som van € 35.000.000,- (inclusief bonussen) aan Club Brugge. Dat was toen de duurste transfer in de geschiedenis van de Belgische competitie. Hij kreeg er het rugnummer 90.[19] De Ketelaere werd er ploegmaat van landgenoten Alexis Saelemaekers en Divock Origi. Hij verkoos Milan boven Leeds in de Premier League, dat het jaar ervoor tegen de degradatie diende te vechten.[20]
Op 13 augustus, de eerste speeldag van de Serie A, maakte De Ketelaere zijn officiële debuut voor AC Milan. 19 minuten voor tijd viel hij in voor Brahim Díaz. CDK gaf zijn visitekaartje af bij zijn invalbeurt en zag in het slot zelfs een doelpunt afgekeurd worden. AC Milan haalde het met 4-2 van Udinese.[21] Op de derde speeldag kreeg hij zijn eerste basisplaats. Hij deed meteen zijn duit in het zakje voor de 'Rossoneri' en gaf een assist bij de 1-0 van Rafael Leão. AC Milan won met 2-0 van Bologna.[22] Naarmate het seizoen vorderde had De Ketelaere meer moeite met doorbreken in Milan en kreeg hij kritiek van de Italiaanse pers, er staat: "in de afgelopen 10 jaar is er geen enkele Rossoneri-spits geweest die na zijn eerste 17 competitieoptredens nog droog bleef staan".[23] Naast het niet scoren is er ook commentaar op zijn tekort aan verticaal spel, dribbelen en creativiteit.
In 40 matchen (met 1.480 speelminuten) scoorde de De Ketelaere geen enkele keer voor zijn nieuwe club. Hij zorgde voor amper één assist. Hij werd door iedereen extra kritisch beoordeeld omdat hij de grootste transfer van Milan was. Echter is hij niet het eerste talent dat een aanpassingsperiode nodig had bij een Europese topclub.[24]
Milan pushte 'floptransfer' De Ketelaere na een teleurstellend eerste seizoen richting exit. Coach Stefano Pioli twijfelde aan hem. In zijn basiselftal voorzag hij geen plaats meer voor de Rode Duivel. Hij kon er de hoge verwachtingen niet inlossen.
Verhuur aan Atalanta Bergamo
Half augustus 2023 maakte Charles De Ketelaere de overstap op huurbasis met een aankoopoptie naar Atalanta Bergamo, een subtopper in de Serie A. Atalanta betaalde € 3.000.000,- om hem één jaar aan zich te binden. Als ze hem aan het eind van het seizoen definitief aan willen trekken, moet de club zo’n € 23.000.000,- betalen. Toen De Ketelaere nog in België speelde wilde Atalanta hem ook, maar ze konden niet mee met de wedloop tussen Leeds en AC Milaan. Samen met Gianluca Scamacca moet hij de vertrokken Rasmus Højlund doen vergeten. Atalanta heeft een aanvallende speelstijl waarin hij kan renderen. Gian Piero Gasperini is een coach die spelers in het verleden beter kon laten renderen en volledig tot bloei kan laten komen.[25][26]
Op 20 augustus vierde De Ketelaere zijn debuut voor zijn nieuwe club tegen Sassuolo. Aan de rust mocht hij invallen voor Duvan Zapata. In zijn eerste wedstrijd bedankte de Milan-huurling voor het vertrouwen en opende hij in de slotfase de score. De Ketelaere klom hoog op een voorzet van linksachter Matteo Ruggeri en kopte de 0-1 tegen de touwen. De wedstrijd eindige op 0-2.[27]
Met 14 goals en 11 assists over alle competities heen in het seizoen 2023/24 was Bergamo uiterst tevreden over de prestaties van de Belg waarop de club besloot hem definitief over te nemen van AC Milan door de aankoopoptie van om en bij de 27 miljoen euro te betalen.
Op 6 november 2020 werd De Ketelaere voor het eerst door bondscoach Roberto Martínez geselecteerd voor de Rode Duivels voor de vriendschappelijke wedstrijd tegen Zwitserland en de Nations League-interlands tegen Engeland en Denemarken. Hij was de enige nieuwkomer bij de selectie.[28]
Tegen de Zwitsers mocht hij twee minuten voor tijd invallen voor een andere debutant Dodi Lukebakio.[29] Ook Hannes Delcroix debuteerde in deze wedstrijd voor de Rode Duivels.
Op 10 november 2022 hakte Martinez de knoop voor de definitieve selectie voor WK 2022 in Qatar door. De Ketelaere maakte hiervan deel uit.[31] In de tweede groepswedstrijd tegen Marokko (0-2 verlies) mocht De Ketelaere na 75 minuten invallen voor Thorgan Hazard. België stond toen al 0-1 in het krijt. Hij maakte hiermee zijn WK-debuut.[32]
EK 2024 Duitsland
Eind mei 2024 werd De Ketelaere door bondscoach Domenico Tedesco opgenomen in de selectie voor het EK 2024 in Duitsland. Hij mocht enkel in de achtste finale tegen Frankrijk in de 88e minuut invallen nadat België op 1-0 achterstand was gekomen.