Nasce a Roma il 14 febbraio 1972. Dopo aver debuttato nel 1993 in teatro, approda alla carriera cinematografica con Ladri di cinema (1994), film diretto da Piero Natoli. Diventa noto al pubblico televisivo per la sua partecipazione a una serie di puntate del Maurizio Costanzo Show.
Nel 1996, per la sua interpretazione in Tutti giù per terra del regista Davide Ferrario, riceve la Grolla d’Oro come miglior attore protagonista, e il Pardo al Festival di Locarno. Ottimo riscontro di pubblico riceve, tra il 1998 e il 1999, grazie all’interpretazione di Rugantino nell’omonima commedia musicale di Garinei e Giovannini. Nel 2005 esordisce alla regia con il cortometraggio Trevirgolaottantasette, su soggetto di Daniele Vicari e sceneggiatura di Vicari e dello stesso Mastrandrea. Nel 2007 ha partecipato a una puntata di Buona la prima, con Ale e Franz. Nello stesso anno è protagonista del film Non pensarci di Gianni Zanasi, nel ruolo del musicista Stefano Nardini. Nel 2009 torna a ricoprire lo stesso ruolo nel serial tratto dal film, in onda sul canale satellitare Fox. Nel 2010 è il figlio della protagonista Anna, interpretata da Stefania Sandrelli, nel film di Paolo Virzì La prima cosa bella, per il quale vince il David di Donatello come miglior attore. Sempre nello stesso anno, recita nel ruolo di De Rossi nel musical di Rob Marshall Nine. Nel 2011 è parte del cast di Tutti al mare, esordio alla regia di Matteo Cerami, figlio del noto sceneggiatore Vincenzo.