Dopo aver maturato le prime esperienze motociclistiche con le minimoto, nel 1997 partecipa al campionato nazionale nella classe 125 classificandosi al primo posto, ripetendosi poi nel 1999 e nel 2000, anno in cui vince anche nel campionato nordico e nell'"iceracing" finlandese, disciplina nella quale si laurea campione in diverse classi anche negli anni successivi. Nel 2000 e nel 2001 prende parte anche al campionato Europeo Velocità, collocandosi al quinto posto nel 2001.[3]
Messo sotto contratto in quegli anni dal team Ajo Motorsport, sempre nel 2001 avviene l'esordio nel motomondiale con una Honda nella classe 125, correndo due gare come wild card senza ottenere punti. Nel 2002 rimane con la stessa squadra come pilota titolare nel mondiale, arrivando 11º nella classifica generale con 78 punti e ottenendo un 5º posto in Spagna come miglior risultato; a fine stagione riceve il premio come miglior esordiente dell'anno per quella classe.[4]
Contestualmente all'attività di pilota professionista, nel 2003 fonda insieme al fratello Vesa ed al padre Hannu il team Kallio Racing.[5][6][7]
Sempre nella stagione 2003 resta fino al GP di Germania nel team Ajo, con compagno di squadra Masao Azuma, in seguito passa a sostituire Arnaud Vincent alla KTM, moto con cui ottiene il suo primo podio, un secondo posto in Malesia; a fine stagione si conferma in undicesima piazza, questa volta con 88 punti. Nel 2004, sempre alla KTM, con Casey Stoner come compagno di team, completa la stagione con un secondo posto in Portogallo come miglior risultato in gara e si classifica decimo con 86 punti.
Nel 2005 coglie la prima vittoria nel motomondiale in Portogallo,[8] risultato ripetuto nel corso dell'anno anche in Germania, Giappone e Valencia, inoltre ottiene anche altri sei podi e otto "pole position"; si colloca al secondo posto finale con 237 punti, dopo aver conteso il titolo iridato a Thomas Lüthi, finendo a 5 punti di distanza dallo svizzero. Nel 2006, rimasto nella stessa squadra con compagno di squadra Julián Simón, conferma il secondo posto finale della stagione precedente, questa volta con un distacco di 76 punti da Álvaro Bautista; nell'annata ottiene tre vittorie, in Cina, Olanda e Giappone, oltre ad altri otto podi e quattro pole position.
Nel 2007, pur rimanendo con lo stesso team, sale di categoria passando alla classe 250 con Hiroshi Aoyama come compagno di squadra; in questa prima stagione nella classe di mezzo riesce a vincere due gare, in Giappone e a Valencia, e fa segnare altri due podi e due pole, mentre nella classifica finale è 7º con 157 punti. Nel 2008 è in squadra con Aoyama e Simón e nel corso dell'anno ottiene sei podi, di cui tre vittorie in: Spagna, in Cina e in Gran Bretagna, terminando in 3ª posizione finale con 196 punti, dietro a Marco Simoncelli e a Bautista.
Dopo due stagioni nella classe intermedia, nel 2009 debutta in MotoGP correndo con una Ducati Desmosedici del team Pramac Racing, con Niccolò Canepa come compagno di squadra. Nel corso della stagione viene chiamato dal team Ducati Corse a sostituire Casey Stoner, fermatosi a causa di problemi fisici per tre Gran Premi,[9] in occasione dei quali ottiene il miglior risultato stagionale finendo al settimo posto a Misano. Ritornato poi al team Pramac, conclude la stagione in 15ª piazza con 71 punti e ottiene per la seconda volta in carriera il premio di miglior debuttante dell'anno.[10] Viene confermato anche per il 2010, questa volta con Aleix Espargaró come compagno di team, e raccoglie un totale di 43 punti, finendo al 17º posto in classifica, con una settima piazza a Jerez quale miglior risultato. In seguito al GP d'Australia, viene ufficializzata la sua separazione dal team per il persistere di problemi fisici ad una spalla.[11]
Nel 2011 passa alla classe Moto2, correndo con una Suter MMX del team Marc VDS Racing e con Scott Redding come compagno di squadra; ottiene un piazzamento a podio in occasione dell'ultima gara a Valencia, mentre nella classifica generale è 16º con 61 punti. Rimane nella stessa squadra anche nel 2012, passando da motociclette Suter a quelle Kalex. Ottiene un secondo posto in Germania e conclude la stagione al 6º posto con 130 punti.
Nel 2013 rimane nello stesso team. Ottiene un secondo posto in Francia e un terzo posto nel Gran Premio delle Americhe. Nel Gran Premio motociclistico della Repubblica Ceca ottiene la sua prima vittoria in Moto2 e ritorna al successo dopo 5 anni. In Giappone giunge secondo dopo essere partito dalla pole position. Conclude la stagione al 4º posto con 188 punti. Sempre nel 2013, partecipa all'evento finale del campionato Italiano Superbike dove, in sella ad una BMW S1000RR conquista la pole position e due vittorie in gara. Nel 2014 rimane nel team Marc VDS Racing, con compagno di squadra Esteve Rabat. Ottiene tre vittorie (Spagna, Francia e Indianapolis), cinque secondi posti (Qatar, Germania, Gran Bretagna, San Marino e Malesia), un terzo posto in Olanda e due pole position (Indianapolis e San Marino) e termina la stagione al 2º posto con 289 punti.
Nel settembre 2014, dopo la gara di San Marino, annuncia la sua separazione per il 2015 dal team Marc VDS Racing per spostarsi (sempre in Moto2) nel team Italtrans con Franco Morbidelli come compagno di squadra. Nella stagione 2015, a partire dal Gran Premio d'Aragona, corre al posto di Anthony West sulla Speed Up del team QMMF Racing, chiudendo la stagione al quindicesimo posto con 72 punti.[12] Il 22 ottobre 2015 è stato ingaggiato dalla KTM per lo sviluppo della RC16 insieme al tedesco Alex Hofmann.[13] Nel 2016 guida questa moto come wildcard in MotoGP nel Gran Premio della Comunità Valenciana, chiudendo la gara con un ritiro.
Torna a correre nel 2017 quando partecipa, in qualità di wild-card, ai Gran Premi di Germania, Austria, Aragona e Comunità Valenciana in sella alla KTM RC16 del team Red Bull KTM Factory Racing, nella classe MotoGP, totalizzando 11 punti.[14] Nel 2018 corre in Spagna e Catalogna come wild-card sempre con la KTM. Ha totalizzato 6 punti e il venticinquesimo posto in graduatoria piloti. Nel 2019 prende il posto di Johann Zarco sulla KTM a partire dal Gran Premio d'Aragona; totalizza 7 punti e chiude ventiseiesimo.
Nel 2020 corre in Portogallo con la KTM del team Tech 3 in sostituzione di Iker Lecuona, risultato positivo al SARS-CoV-2, senza ottenere punti.[15]