Spence speelde in de jeugdopleiding van Fulham. Hier kwam het echter niet tot een doorbraak en in de zomer van 2018 stapte hij transfervrij over naar Middlesbrough. Voor die club maakte hij zijn professionele debuut op 14 augustus van dat jaar. Op die dag werd in een wedstrijd om de League Cup met 3–3 gelijkgespeeld tegen Notts County en na strafschoppen met 4–3 gewonnen. Spence moest van coach Tony Pulis op de reservebank beginnen en mocht eenentwintig minuten na rust invallen voor Dael Fry.[1] In zijn eerste jaargang kwam de vleugelverdediger tot twee bekeroptredens. Op 26 december 2019 kwam hij voor het eerst tot scoren, toen in het Championship in het eigen Riverside Stadium gespeeld werd tegen Huddersfield Town. Acht minuten voor rust tekende hij op aangeven van Ashley Fletcher voor het enige doelpunt van de wedstrijd: 1–0.[2]
In de zomer van 2021 werd Spence voor een seizoen verhuurd aan Nottingham Forest.[3] In maart 2022 won hij de prijzen voor de beste speler, beste jonge speler en het mooiste doelpunt van de maand in het Championship.[4][5][6] Aan het einde van het seizoen promoveerde Spence met Nottingham naar de Premier League.[7] Na zijn terugkeer bij Middlesbrough werd de vleugelverdediger voor een bedrag van bijna vijftien miljoen euro overgenomen door Tottenham Hotspur, waar hij zijn handtekening zette onder een verbintenis voor de duur van vijf seizoenen.[8] In zijn eerste halfjaar bij Tottenham kwam Spence tot zes officiële optredens, waarna hij in januari 2023 verhuurd werd aan Stade Rennais tot het einde van het seizoen.[9] Medio 2023 werd hij opnieuw verhuurd, nu aan Leeds United.[10] Na een half seizoen besloot Leeds dat Spence mocht terugkeren naar Tottenham Hotspur.[11] Hierop werd hij voor de rest van het seizoen verhuurd aan Genoa, als onderdeel van de transfer van Radu Drăgușin naar Tottenham.[12] Nadat hij aan het begin van het seizoen tot meer speelminuten kwam in het eerste elftal van Tottenham, werd het contract van Spence opengebroken en met een jaar verlengd tot medio 2028.[13]