Inizia la sua carriera nei campionati nazionali italiani nel 2010, vincendo nel 2011 il suo primo titolo nell'Europeo minimoto Junior A. In seguito, nel 2013 vince l'Europeo MiniGP 50cc e passa al CIV PreMoto3 125 2 tempi, restandoci due anni finendo secondo nel 2014 e quarto nel 2015.
L'anno seguente passa alla categoria Moto3. Si classifica secondo nel 2016, vince il titolo nel 2017,[2] arriva nuovamente secondo nel 2018 e vince per la seconda volta il titolo nel 2019.[3]
Il titolo SSPNG nel CIV
Nel 2022 vince il titolo nella classe Supersport Next Generation in sella alla Ducati Pangiale V2 del Barni Spark Racing Team.[4] Lo stesso anno debutta nel mondiale Supersport nella tappa di Misano a bordo di una Ducati Panigale V2 della squadra D34G Racing in sostituzione dell'infortunato Filippo Fuligni. Termina 15º in gara 1, conquistando cosi i suoi primi punti mondiali, e 21º in gara 2. Questo gli permette di concludere il campionato al 36º posto con un punto.
MotoE e Supersport
Per il 2023 viene ingaggiato come pilota titolare nel mondiale Supersport dal team VFT Racing Yamaha a bordo di una Yamaha YZF R6 e in MotoE dal team Pons Racing 40 con Mattia Casadei come compagno di squadra. In Supersport ottiene il suo primo podio mondiale dopo aver terminato la gara 1 di Phillip Island al 2º posto,[5] con settantaquattro punti chiude al quattordicesimo posto tra i piloti.[6] Con le motociclette elettriche ottiene quattro piazzamenti a podio, tra i quali la prima vittoria, conquistata nella seconda prova a Misano evento conclusivo del campionato, chiuso da Spinelli al sesto posto.[7]
Nella stagione 2024 disputa il Mondiale MotoE con il team Tech3 E-Racing con Alessandro Zaccone come compagno di squadra.[8] Ottiene tre vittorie ad inizio stagione per poi chiudere il campionato al settimo posto.[9] Sempre nel 2024, viene chiamato dal team Barni Racing a sostituire Danilo Petrucci nel Gran Premio di Assen del Mondiale Superbike in sella alla Ducati Panigale V4R. Ottiene una vittoria in Gara 1,[10] un diciottesimo posto nella Superpole Race e un sedicesimo posto in Gara 2. I punti conquistati gli consentono di classificarsi diciannovesimo in campionato e quinto nel Trofeo Indipendenti.[11] Contestualmente alle competizioni mondiali, prende parte ad alcune prove del campionato Europeo di Moto2 dove, in sella ad una Kalex del team AGR, conquista una ventina di punti classificandosi diciottesimo.[12]