W 1991 uzyskał tytuł profesora sztuk teatralnych.
Przełom w karierze scenicznej zawdzięcza Wrocławskiemu Teatrowi Współczesnemu (1967–1973), gdzie zagrał główne role w dwóch głośnych przedstawieniach Jerzego Jarockiego: Stara kobieta wysiaduje Tadeusza Różewicza (1969) w roli kelnera i Paternoster Helmuta Kajzara (1970) w roli ojca. W latach 1973–2004 był związany ze Starym Teatrem im. Heleny Modrzejewskiej w Krakowie, jako aktor, a także reżyser. Ze Starym Teatrem współpracował do końca 2025 roku. Występował m.in. w Procesie Franza Kafki, Sklepach cynamonowych Bruno Schulza, a także w Wyzwoleniu Stanisława Wyspiańskiego. W 1989 „Trybuna Ludu” przyznała mu nagrodę za kreacje sceniczne i filmowe oraz działalność społeczno-polityczną i pedagogiczną. Występował także m.in. w Teatrze Nowym w Krakowie.
Na ekranie debiutował w roli dziennikarza w dramacie psychologicznym Kazimierza Kutza Ktokolwiek wie… (1966). Rozpoznawalność zapewniła mu rola doktora Romana Bognara w medycznym serialu telewizyjnym Andrzeja Titkowa Układ krążenia (1977–1978). Na przestrzeni lat zagrał w ponad 70 filmach, ponad 110 przedstawieniach teatralnych i ponad 80 spektaklach teatru telewizji.