Professionista dal 2012 al 2021, soprannominato il Cavaliere dei Quattro Mori, in carriera ha vinto la Vuelta a España 2015, una tappa al Tour de France, tre tappe al Giro d'Italia e due alla Vuelta a España e il titolo nazionale nel 2017, oltre a due podi al Giro d'Italia. È il primo sardo (e quarto italiano assoluto dopo Felice Gimondi, Francesco Moser e Vincenzo Nibali) ad aver indossato la maglia rosa del Giro d'Italia, la maglia gialla del Tour de France e la maglia rossa della Vuelta a España.

Carriera Gli esordi e le stagioni da Under-23 Originario di Villacidro, ma nato a San Gavino Monreale, per via della presenza del principale ospedale del Medio Campidano, all'età di quindici anni abbandona gli altri sport per dedicarsi al ciclismo. Nel biennio 2007-2008 gareggia tra gli Juniores con il team G.S. Sardegna Ozierese Carrera di Ozieri. In questa categoria si mette in evidenza sia nella mountain bike, specialità in cui è riserva ai campionati del mondo in Val di Sole, che nel ciclocross, partecipando ai campionati nazionali, mondiali ed europei sempre nella categoria juniores, senza però ottenere piazzamenti di rilievo. Nel 2008 vince anche il campionato sardo juniores su strada e partecipa al Giro della Lunigiana, importante gara di categoria.

Dilettante Under-23 dal 2009 nelle file del team bergamasco Palazzago-Elledent-Rad Logistica guidato dal direttore sportivo Olivano Locatelli, nel 2010 è quinto al Giro del Belvedere, secondo al Trofeo Gianfranco Bianchin e quarto nella classifica generale del Giro della Valle d'Aosta. Nel 2011 ottiene i primi successi: la Bassano-Monte Grappa, la classifica finale del Giro delle Valli Cuneesi e quella del Giro della Valle d'Aosta, gara del calendario europeo. Consegue inoltre piazzamenti al Girobio (il Giro d'Italia per Under-23), in cui chiude quarto, e ai campionati italiani di Canicattini Bagni, dov'è secondo nella gara in linea Under-23 vinta da Matteo Trentin. A fine anno firma un contratto con il team kazako Astana, valido a partire dal 1º agosto 2012.

Nel 2012 si impone nella Toscana-Terra di ciclismo, gara a tappe valida per la Coppa delle Nazioni U23, bissando poi il successo al Giro della Valle d'Aosta grazie anche a un successo di tappa. In stagione è anche quarto al Gran Premio Palio del Recioto, secondo al Girobio, alle spalle di Joseph Dombrowski, piazzandosi secondo nelle frazioni con arrivo al Monte Terminillo e al Passo di Gavia, e quinto nella prova in linea Under-23 del campionato italiano di Roncegno Terme.

2012-2013: il debutto nel professionismo Aru fa il suo debutto da professionista con la maglia dell'Astana il 20 agosto 2012 nella USA Pro Cycling Challenge, in Colorado, ottenendo un secondo posto nella sesta tappa dietro a Rory Sutherland; in settembre partecipa quindi alle classiche italiane d'autunno, tra cui il Giro di Lombardia.

Nella primavera del 2013 conclude quarto al Giro del Trentino, vinto dal suo capitano Vincenzo Nibali, e si aggiudica la classifica dei giovani della corsa; poche settimane dopo partecipa quindi per la prima volta al Giro d'Italia, in qualità di gregario di Nibali. In quella "Corsa rosa" veste per quattro tappe la maglia bianca di miglior giovane contribuendo al successo finale del suo capitano; riesce inoltre a centrare il quinto posto nella penultima tappa, la più dura e selettiva, vinta proprio da Nibali in mezzo a una bufera di neve, sul traguardo delle Tre Cime di Lavaredo, riprendendo e staccando nel finale esperti atleti quali Michele Scarponi e Cadel Evans. In agosto è infine settimo alla Tre Valli Varesine.

2014: il terzo posto al Giro e la prima partecipazione alla Vuelta

Nel 2014, dopo il settimo posto al Giro del Trentino, partecipa ancora al Giro d'Italia, questa volta in appoggio a Michele Scarponi. Tuttavia, vista la non buona condizione del suo capitano, che al termine dell'ottava tappa perde 10' dai migliori, Aru si ritrova ad essere il nuovo capitano. Il 25 maggio vince la sua prima tappa al Giro, la quindicesima con arrivo a Montecampione, salendo al quarto posto della graduatoria generale; cinque giorni dopo, nella terzultima tappa, la cronoscalata del Monte Grappa, si piazza secondo dietro alla maglia rosa Nairo Quintana e si porta in terza posizione in classifica. Alla conclusione del Giro, a Trieste, riesce a confermare la terza piazza, ottenendo così il suo primo podio in un grande Giro.

Dopo il Giro corre il Tour de Pologne, e il 23 agosto si presenta al via della Vuelta a España. Nella corsa spagnola riesce a vincere due tappe, l'undicesima, con arrivo al Santuario de San Miguel de Aralar, e la diciottesima, con arrivo sul Monte Castrove a Meis. Conclude la corsa a tappe spagnola quinto, a 4'48" dal vincitore Alberto Contador. Dopo la Vuelta corre il suo primo campionato del mondo Elite a Ponferrada, concludendolo, la Milano-Torino, classificandosi quarto, e il Giro di Lombardia, concluso al nono posto.

2015: il secondo posto al Giro d'Italia e la vittoria alla Vuelta

Inizia la stagione 2015 alla Parigi-Nizza, e partecipa poi alla Volta Ciclista a Catalunya, ottenendo il sesto posto finale. Il 9 maggio prende quindi il via del Giro d'Italia come capitano dell'Astana.. Dopo essersi issato al secondo posto della generale dopo la quinta tappa sull'Abetone e aver mantenuto il piazzamento per altre sette frazioni, indossa per la prima volta la maglia rosa dopo la dodicesima tappa, a Lido di Jesolo, complice una caduta che vede coinvolto il leader di classifica Alberto Contador. Dopo aver ceduto la maglia a Contador già il giorno seguente, al termine della cronometro da Treviso a Valdobbiadene, attraversa alcune difficoltà nella sedicesima tappa, la Pinzolo-Aprica, cedendo la piazza d'onore in classifica al compagno Mikel Landa; tre giorni dopo vince però la diciannovesima frazione, a Cervinia, riconquistando il secondo posto della generale perso ad Aprica, e l'indomani è ancora vincitore in solitaria a Sestriere. Conclude così secondo nella generale del Giro, a 1'53" da Contador, e vince anche la classifica giovani della corsa.

Dopo il quinto posto al Tour de Pologne, partecipa alla Vuelta a España, rivestendo il ruolo di co-capitano dell'Astana insieme a Vincenzo Nibali. Nella seconda tappa, a causa della squalifica di Nibali, diventa il capitano unico del suo team; giunge quindi quarto nella nona tappa, con arrivo in salita a Benitachell, a pochi secondi da Chris Froome e Joaquim Rodríguez, due dei favoriti per la vittoria finale. Nell'undicesima tappa, da Andorra la Vella a Cortals d'Encamp, si classifica secondo dietro al compagno di squadra Landa, e indossa la maglia di leader della classifica generale. Il giorno successivo Froome è costretto al ritiro per una frattura ad un piede; durante la sedicesima tappa, con arrivo in salita a Quirós, Aru perde però la maglia rossa per 1" in favore di Rodríguez. Nella tappa successiva, la cronometro di Burgos vinta da Tom Dumoulin, giunge decimo mantenendo la seconda posizione in classifica, a 3" dallo stesso Dumoulin, nuovo leader. Riconquista definitivamente il simbolo del primato tre giorni dopo, nella tappa con arrivo a Cercedilla, staccando di 3'52" Dumoulin e aggiudicandosi così la corsa spagnola. Conclude la stagione con il terzo posto alla Milano-Torino, il secondo al Tour of Almaty e il secondo nella classifica finale dell'Abu Dhabi Tour.

Grazie alla vittoria nella Vuelta e ai successi di tappa al Giro, riceve il Collare d'oro al merito sportivo, la massima onorificenza del CONI, che si aggiunge alla medaglia di bronzo al valore atletico ottenuta nel 2011 con il secondo posto nel campionato italiano Under 23. A fine stagione Fabio Aru si piazza al numero 3 della classifica mondiale UCI.

2016: l'esordio al Tour de France e alle Olimpiadi

Nel febbraio 2016 Aru corre prima la Volta Valenciana, classificandosi sesto, e poi la Volta ao Algarve, in cui conclude nono. Tra marzo e aprile è quindi impegnato prima alla Volta Ciclista a Catalunya, alla Giro dei Paesi Baschi e all'Amstel Gold Race (in queste ultime due competizioni si ritira). Nel mese di giugno prende parte al Critérium du Dauphiné, vincendo la terza tappa a Tournon-sur-Rhône, ma chiude distante dai primi in classifica. In luglio fa il suo esordio al Tour de France, ma con risultati interlocutori. Durante le prime due settimane e mezzo di gara si piazza sesto nell'ottava tappa a Bagnères-de-Luchon, settimo nella cronometro di Megève e quindi sesto nella diciottesima frazione a Saint-Gervais Mont Blanc, risalendo fino alla sesta posizione in classifica; crolla però nell'ultima tappa di montagna, la Megève-Morzine, nella quale subisce un distacco di 13'20" dalla maglia gialla Froome, probabilmente per una crisi di fame dovuta ad un'alimentazione non corretta, chiudendo la sua prima esperienza alla Grande Boucle al tredicesimo posto della generale.

Dopo la Grande Boucle è selezionato dal c.t. Davide Cassani per i Giochi olimpici di Rio de Janeiro: in Brasile partecipa alla corsa in linea su strada, svoltasi il 6 agosto sui 237,5 km del circuito del Forte di Copacabana, chiudendo sesto, miglior italiano, a 22" dal vincitore Greg Van Avermaet, dopo aver lavorato per il capitano Vincenzo Nibali, caduto e ritirato quando si ritrovava nel gruppo in testa alla corsa. Viene poi convocato anche per i campionati europei di Plumelec, in cui conclude 23º. Tra fine settembre e inizio ottobre si piazza quindi quarto al Giro dell'Emilia, nono alla Tre Valli Varesine, sesto alla Milano-Torino e infine undicesimo al Giro di Lombardia, a 1'26" dal vincitore Esteban Chaves. Termina la stagione 60° nel Ranking UCI.

2017: il titolo italiano e il quinto posto al Tour

Nel 2017 debutta alla Tirreno-Adriatico sia con ambizioni di classifica sia per effettuare un test sulla sua condizione in vista dell'imminente Giro d'Italia. Tuttavia, sull'arrivo in salita del Terminillo, si piazza solo trentasettesimo a 4'06" dal vincitore Nairo Quintana. Il giorno successivo non prende il via. A causa di un infortunio al ginocchio è costretto a saltare il Giro d'Italia partente dalla sua Sardegna, suo grande obiettivo stagionale. Al suo posto la Astana Pro Team convoca Michele Scarponi: il ciclista morirà il 22 aprile investito da un furgone mentre si allenava nelle strade di Filottrano. Ripresosi dall'infortunio, Aru si ripresenta alle competizioni ufficiali a giugno, piazzandosi al quinto posto del Giro del Delfinato.

Il 25 giugno 2017 conquista il titolo di campione italiano, vincendo per distacco la prova in linea Gran Piemonte, da Asti a Ivrea.

Affronta il Tour de France, come capitano. Il 5 luglio 2017 vince la quinta tappa Vittel-La Planche des Belles Filles, partendo ai 2,4 km dal traguardo con una grande progressione, portandosi in terza posizione in classifica dietro alla coppia britannica della Sky Froome e Thomas, questa risulterà l'ultima sua vittoria da professionista. Nella nona tappa, la Nantua > Chambéry, attacca Froome, vittima di un problema meccanico, senza successo, ma sfruttando il ritiro di Thomas si porta in seconda posizione in classifica. Nella 12ª tappa, con arrivo previsto dopo una ripida rampa finale, con punte del 20%, scatta, viene ripreso, si piazza terzo dietro a Uran e Bardet, e conquista la maglia gialla di leader, che tuttavia cede, nuovamente a Froome due giorni dopo. Durante la 17ª tappa, che prevedeva la scalata del col du Galibier, paga 1' e 44" dal vincitore di giornata Primož Roglič, scivolando fuori dal podio. Perde qualche secondo anche nelle tappe successive, dimostrando di pagare la mancanza di esperienza al Tour. Tuttavia, alla fine del Tour, si piazza al quinto posto, a 3'05" dal vincitore Chris Froome.