Wystąpił w kilkudziesięciu rolach teatralnych w spektaklach takich reżyserów jak Zbigniew Brzoza (jako Lokator I w Przemianie Franza Kafki, 1993), Wojciech Pokora (jako Ray w Love Story Ericha Segala, 1993), Krzysztof Warlikowski (w Tancerzu Mecenasa Kraykowskiego Witolda Gombrowicza, 1997), Mikołaj Grabowski (jako Kozłowski w Proroku Ilji Tadeusza Słobodzianka, 1999; jako Organista Somnambulmeister w Wiele demonów Jerzego Pilcha, 2017), Andrzej Szczytko (jako sierżant Jim Murphy w Antygonie w Nowym Jorku Janusza Głowackiego, 2017), Kazimierz Dejmek (jako Rozenkranc w Hamlecie Williama Shakespeare’a, 2003) oraz Remigiusz Brzyk (w Brygadzie szlifierza Karhana Vaska Kani, 2008 i 2014; jako Muller i Grosglick w Ziemi obiecanej Władysława Reymonta, 2015).

Na dużym ekranie zadebiutował w belgijsko-francusko-holenderskiej produkcji filmowej Stijna Coninxa Daens. W polskim filmie fabularnym pojawił się po raz pierwszy w roku 1992, w horrorze Łukasza Karwowskiego Listopad. Największą popularność zyskał dzięki serialowi telewizyjnemu Plebania (2000−2011), w którym wcielił się w rolę Janusza Tracza, postaci, która bywa określana najczarniejszym charakterem w polskiej telewizji.

W 2020 był jednym ze wspołżałożycieli Teatru Klasyki Polskiej. Został jego dyrektorem artystycznym.