Attore e regista. Si diploma alla fine degli anni ‘80 alla Bottega di Gassman. Dopo alcune esperienze con Franco Però, Giancarlo Sepe, Aldo Trionfo, Chérif, Imogen Kusch è selezionato da Peter Stein per il Tito Andronico di Shakespeare allo Stabile di Genova, dove rimane alcune stagioni ricoprendo ruoli di primaria importanza in spettacoli di Benno Besson e Marco Sciaccaluga.
Nel 1997 Gassman lo richiama per Bugie sincere, al Teatro Stabile del Friuli. Collabora inoltre con Federico Tiezzi, Marco Carniti e Patrick Rossi Gastaldi. Nel 2001 è Onegin al Teatro Stabile di Torino con la regia di Daniele Salvo, Roberto Zucco per la regia di Chérif, al Teatro Stabile delle Marche, Giasone con Peter Stein nella Medea di Euripide, andata in scena a Siracusa nel 2004. Col Piccolo di Milano interpreta il ruolo del reverendo nel Professor Bernhardi di Schnitzler, del Corifeo ne Le Rane, di Coronato ne Il Ventaglio di Goldoni, partecipa alla messa in scena del Sogno di una notte di mezza estate e del Mercante di Venezia di Shakespeare e di Santa Giovanna dei macelli di Bertolt Brecht tutti per la regia di Luca Ronconi. Sempre al Piccolo lavora con Carmelo Rifici ne I pretendenti di Lagarce e in Detteagli di Lars Noren e con Serena Sinigaglia ne La cimice di Majakovskij.
È coprotagonista di Sostiene Pereira di Tabucchi, con Paolo Ferrari, regia di Teresa Pedroni. Interpreta Edgar nel Re Lear, Bruto nel Giulio Cesare, Iago nell’Otello e Claiban ne La Tempesta a fianco di Giorgio Albertazzi, messi in scena al Globe Theatre di Roma, per la regia di Daniele Salvo da cui è diretto anche in Siamo tutti in pericolo, ultima intervista di Pier Paolo Pasolini e Gramsci a Turi di Antonio Tarantino presentato al Festival di Napoli nel 2010. Del 2011 è Un angelo sopra Bagdad di Judith Tompson per la regia di Marco Carniti presentato al Piccolo Teatro di Milano e al Teatro India a Roma. Sempre con Carniti è Jaques in Come vi piace al Globe.