Après des études de lettres classiques à la faculté des lettres de Montpellier, il entreprend des études de théâtre au Conservatoire national supérieur d'art dramatique de Paris, où il rencontre Antoine Vitez. Acteur de théâtre d'abord, il joue notamment avec Mehmet Ulusoy aux tout débuts du Théâtre de Liberté, Claude Risac, Jacques Rosner, Jacques Lassalle, Stuart Seide... Il met également en scène deux pièces de Pierre Macris au Théâtre des Amandiers de Nanterre.
Il retrouve Antoine Vitez, qu'il assiste pour l'ouverture du Théâtre National de Chaillot, et avec lequel il jouera une dizaine de spectacles. C'est également pendant cette période qu'avec Antoine Vitez il crée et enseigne à l'École du Théâtre national de Chaillot.
Après un petit rôle remarqué dans le Cyrano de Jean-Paul Rappeneau, il tourne plus souvent qu'il ne joue sur scène, à part quelques incursions dans le théâtre privé (La Parisienne avec Nathalie Baye, et Les Portes du ciel avec Gérard Depardieu).
Il revient au théâtre public à partir de 2001 pour jouer L'Échange mis en scène par Jean-Pierre Vincent, et alterne depuis, entre créations dans plusieurs centres dramatiques ou théâtres nationaux (dans des mises en scène d' Alain Françon, Éric Lacascade, Arthur Nauzyciel...), et tournages pour le cinéma et la télévision (avec pour partenaires Gérard Depardieu, Nathalie Baye, Yves Montand, Alain Delon, Isabelle Huppert, Guillaume Canet, Charles Berling...), sous la direction de François Dupeyron, Pierre Granier-Deferre, Xavier Giannoli,
Antoine De Caunes, Xavier Beauvois, Christophe Honoré, Claude Chabrol...