Inizia a correre per il Team Bibanese e per il Cycling Team Friuli, per poi essere messo sotto contratto nel 2010 dall'Androni come stagista. Nel 2011 passa ufficialmente al team italiano, con cui vince la cronometro a squadre della Settimana Internazionale di Coppi e Bartali, e i titoli nazionali di inseguimento a squadre 2010, 2011 e 2012 e il titolo di inseguimento individuale nel 2010.
Nel 2013 si trasferisce alla Cannondale: nello stesso anno vince a Risoul l'ultima tappa del Giro del Delfinato, quando riesce, dopo un'azione da lontano, a staccare tutti gli altri compagni di fuga lungo la salita finale e arrivare solo al traguardo.[3]
Nel 2014 al Tour de France vince per due volte consecutive il numero rosso della combattività (nella 13ª e 14ª tappa), aggiudicandosi poi il Premio della Combattività, assegnato al più combattivo del Tour.[4] Un mese dopo alla Vuelta a España si aggiudica la settima tappa, arrivando in solitaria al traguardo di Alcaudete, dopo aver staccato i suoi tre compagni di fuga.[5]
Nel 2015, in maglia BMC, è ancora protagonista alla Vuelta a España dove conquista sul Fuente del Chivo la quattordicesima frazione, precedendo i suoi compagni di avventura.[6]
Torna al successo nel 2018 sempre alla Vuelta a España vincendo l'undicesima tappa, arrivando in solitaria sul traguardo di Luintra dopo aver nuovamente distanziato tutti i componenti della fuga di giornata.[7] Nella stessa stagione vince anche la sua prima classica in carriera, imponendosi in solitaria al Giro dell'Emilia con un'azione dalla distanza terminata in vetta alle dure rampe del San Luca.[8]
Passato alla Israel, nel 2021 al termine della quarta tappa del Giro d'Italia, la Piacenza-Sestola chiusa in seconda posizione dietro Joseph Dombrowski,[9] veste la prima maglia rosa della carriera:[10] la cede due giorni più tardi nell'arrivo in salita di San Giacomo.[11] In seguito, a causa di una brutta caduta nel corso della dodicesima frazione, è costretto al ritiro.[12] A tre anni di distanza dall'ultimo successo torna ad alzare le braccia alla Tre Valli Varesine del 5 ottobre, battendo Davide Formolo in uno sprint a due.[13]
Nel 2024 in maglia Jayco vince a Stans la seconda tappa del Tour of the Alps, staccando nel finale i compagni di fuga.[14]