È cresciuto a Palermo nel quartiere Sperone.
Fa i primi passi nelle giovanili del Palermo, dove giocherà dal 1990 al 1998, e proprio in maglia rosanero realizza il record di 100 reti segnate in un solo anno, che gli fa guadagnare il passaggio alla Roma.
Nel 1998, a 16 anni, entra a far parte della prima squadra guidata da Zdeněk Zeman e vi rimane anche per i primi due anni della gestione Capello, durante la quale fa il suo esordio in serie A, il 5 novembre 2000 nella partita vinta a Brescia contro il Brescia (4-2),[4] e vince lo scudetto nella stagione 2000-2001.
Nel marzo del 2001 passa in compartecipazione al Bari, nell'affare che porta Antonio Cassano a Roma.[5] Con la maglia barese in serie B trova molto spazio giocando 63 partite in due stagioni, dopodiché nell'ottobre del 2003 fa ritorno alla Roma per altri due anni, trovando però poco spazio.[6] Il 4 aprile 2004 realizza la sua prima marcatura in maglia giallorossa contro il Lecce (0-3).[7] Dopo il trasferimento al Messina nel gennaio del 2005 con Bortolo Mutti alla guida della squadra peloritana,[3] in una stagione e mezza colleziona 42 presenze e 5 gol in campionato.
Udinese
Il 9 luglio 2006 si trasferisce all'Udinese,[8] dove indossa inizialmente la maglia numero 4, numero appartenuto fino all'anno prima al capitano Valerio Bertotto, e dal terzo anno di Udine, la maglia numero 21.
Nella stagione 2008-2009, la terza in maglia friulana, realizza 11 reti in 36 presenze.
I gol arrivano contro Bologna, Lecce (sia all'andata che al ritorno), Genoa, Fiorentina (doppietta), Chievo (seconda doppietta consecutiva), Lazio, Milan e Sampdoria: 6 di questi sono calci di rigore, 4 su punizione e 1 su azione.
Nell'estate del 2009 è molto vicino al Real Madrid, ma alla fine salta l'accordo per le mancate garanzie da parte dei Blancos.[senza fonte]
Nell'annata 2009-2010 colleziona 20 presenze con un gol, segnato nella partita persa 2-1 con il Siena.[9] L'Udinese conclude il campionato con un 15º posto.
Fiorentina
Il 3 giugno 2010 la Fiorentina annuncia l'acquisto in comproprietà del centrocampista siciliano[10][11] versando nelle casse del club friulano 4,5 milioni di euro.[12]
All'esordio in maglia viola, il 29 agosto 2010 in Fiorentina-Napoli valida per la prima giornata di Serie A, mette a segno la sua prima rete che vale il pareggio al 49'.[13]
Il 16 settembre s'infortuna al ginocchio e rimane fuori dai campi fino agli inizi di novembre.[14]
Va poi a segno su punizione all'Olimpico contro la Roma (sconfitta viola per 2-3) il 10 novembre e contro il Parma su calcio di rigore nel pareggio per 1-1 del 6 febbraio 2011. Il 1º maggio 2011 segna la sua prima doppietta con la Fiorentina proprio contro la sua ex squadra, l'Udinese, battuta 5-2.[15]
Il 2 marzo si frattura una mano in allenamento e salta tre giornate a causa di questo infortunio.[16]
Siena e prestito al Pescara
Il 24 giugno 2011, alla scadenza della compartecipazione, Fiorentina e Udinese non si accordano andando così alle buste,[17] all'apertura delle quali, nel giorno successivo, il cartellino del giocatore risulta interamente riscattato dalla società friulana[17][18] che se lo aggiudica per 111.000 euro contro i 50.000 euro offerti dai toscani.[19][20]
Il 9 luglio 2011 viene ufficializzato il suo passaggio in comproprietà al Siena;[21] Esordisce in maglia bianconera il 21 agosto in Siena-Torino (1-0) del terzo turno di Coppa Italia, giocando titolare.[22] Segna il primo gol in maglia bianconera in Siena-Chievo (4-1) della decima giornata di campionato,[23] con una punizione.[24][25]
Tra il 23 febbraio e il 7 aprile è vittima di una lombalgia.[26][27][28] Chiude la stagione con 24 presenze in campionato, segnando 3 gol, e una in Coppa Italia.
Il 22 giugno il Siena rileva anche l'altra metà del cartellino ancora in possesso dell'Udinese.[29] Ha debuttato nella nuova stagione il 19 agosto giocando da titolare la sfida di Coppa Italia vinta contro il Vicenza per 4-2 con una sua doppietta.
Il 21 gennaio 2013 passa in prestito con diritto di riscatto al Pescara,[30] obbligatorio in caso di salvezza del club abruzzese.[31][32] Debutta il 27 gennaio nella sconfitta per 6-0 contro la Sampdoria; la settimana seguente, il 3 febbraio, realizza il primo gol con la maglia del Pescara su calcio di rigore ai danni del Bologna.
A fine stagione il Pescara, retrocesso in cadetteria, non lo riscatta e fa ritorno a Siena. Il 24 agosto, nella gara d'esordio della Serie B, realizza una doppietta contro il Crotone nella gara terminata 5-2 per i toscani.[33] Il 22 luglio 2014, dopo la mancata iscrizione del Siena al campionato di Serie B, rimane svincolato.[34]
Fidelis Andria, Benevento e Lupa Roma
Il 10 settembre 2014 raggiunge l'accordo con la Fidelis Andria[35] con cui gioca varie partite mettendo in mostra grandi doti tecniche. Nonostante il buon impatto il 1º dicembre dello stesso anno lascia la squadra per divergenze contrattuali con la società.
Il 1º dicembre 2014 decide di cominciare una nuova avventura al Benevento, tornando dunque al calcio professionistico. Segna il primo gol con la maglia giallorossa nella partita casalinga contro la Reggina, terminata 4-0, con un gol al volo da distanza ravvicinata. Il 17 giugno 2015 rescinde anticipatamente il contratto che lo legava al club campano.[36][37]
Il 22 giugno 2015 firma con la Lupa Roma[38] ritirandosi a fine anno.
Riceve la sua prima convocazione in Nazionale da parte del CT Marcello Lippi, in vista della partita amichevole del 19 novembre 2008 contro la Grecia, nella quale però non scende in campo.[39]
Il 6 giugno 2009, a 27 anni, esordisce in Nazionale giocando da titolare nella partita amichevole Italia-Irlanda del Nord (3-0) disputata a Pisa.
Allenatore
Dopo aver terminato il corso per allenatori a Coverciano, nell'agosto 2016 D'Agostino viene ingaggiato come allenatore dell'Anzio, squadra militante in Serie D.[40] Guida la squadra alla salvezza ad inizio anno insperata.
Il 9 giugno 2017 diventa il nuovo tecnico della Virtus Francavilla in Serie C.[41]
Il 7 settembre seguente supera con esito positivo l'esame da allenatore di seconda categoria UEFA A per poter allenare in Serie C.[42] Al termine della stagione, conclusa con il nono posto in classifica e l’eliminazione al secondo turno dei play-off del girone C per mano della Juve Stabia, lascia la squadra pugliese.[43]
Il 12 giugno 2018 sostituisce Michele Marcolini sulla panchina dell'Alessandria, firmando un biennale con il club piemontese.[44] Il 17 febbraio 2019 viene esonerato dopo la sconfitta per 0-1 contro l'Arzachena.[44]
Il 4 ottobre 2019, dopo aver rescisso il contratto che lo legava all'Alessandria, firma il contratto con il Lecco, subentrando all'esonerato Marco Gaburro.[45] Dopo essersi salvato al primo anno, la stagione seguente si piazza al sesto posto nel girone A venendo poi eliminato al primo turno dei play-off per mano del Grosseto.
Il 27 giugno 2021 viene ufficializzato l'ingaggio come tecnico della Vibonese.[46] Viene esonerato il 12 febbraio 2022.[47]
Vita privata
D'Agostino ha due figli maschi, Giuseppe (2009) e Mathias (2015), che giocano entrambi nelle giovanili della Roma.[48]