Родился 23 июня 1943 года в г. Каменск-Уральский Свердловской области. По национальности русский.
Окончил Уральский политехнический институт им. С.М. Кирова в 1965 году, Свердловскую высшую партийную школу в 1983 году.
С 1960 по 1966 год - модельщик на Уральском заводе тяжелого машиностроения им. С. Орджоникидзе (г. Свердловск). С 1966 по 1968 год - инженер-технолог, с 1968 по 1972 год - секретарь Комитета ВЛКСМ, с 1972 по 1975 год - начальник технического бюро, заместитель начальника отдела, главный металлург.
С 1975 по 1978 год - секретарь парткома Уральского электромеханического завода (г. Свердловск).
С 1978 по 1983 год - второй, затем первый секретарь Кировского райкома КПСС г. Свердловска. С 1983 по 1990 год - первый секретарь Свердловского горкома КПСС. С 1990 по 1991 год (до запрещения КПСС) - первый секретарь Свердловского обкома КПСС. Избирался членом ЦК КПСС (1990-1991).
Избирался депутатом Верховного Совета РСФСР (1985-1990), народным депутатом РФ (1990-1993), входил в состав фракции «Коммунисты России».
С 1992 по 1996 год - заместитель директора АО «Уралмедь», генеральный директор АО Концерн «Русская печь», с 1996 по 2000 год - заместитель директора Свердловского филиала Научно-исследовательского и конструкторского института энерготехники (НИКИЭТ) Министерства РФ по атомной энергии (г. Екатеринбург).
После восстановления КПРФ в Свердловской области встал на учет, в последующем (в середине 1990-х) возглавил Свердловское отделение КПРФ. Являлся членом ЦК КПРФ с 1997 по 2004 год.
Дважды - в 1995 и 1999 годах - баллотировался на пост губернатора Свердловской области. В 1995 году набрал 8,06% голосов и занял 4 место, в 1999 - 9,64% и тоже 4 место.
19 декабря 1999 года был избран в Государственную Думу РФ третьего созыва по федеральному списку избирательного объединения КПРФ, был членом фракции КПРФ, заместителем председателя Комитета ГД по экологии.
7 декабря 2003 года баллотировался на Выборах в Государственную Думу по федеральному списку избирательного объединения КПРФ (избран не был), а также по Артемовскому одномандатному избирательному округу No 161 Свердловской области (занял четвертое место).
В 2004-2008 годах был депутатом Областной думы.
В 2004 году принял участие в альтернативном X съезде КПРФ. В связи с этим был снят с должности первого секретаря обкома. 27 июня 2005 года был исключён из партии решением Президиума ЦК КПРФ.
В 2008 году вошел в первую тройку предвыборного списка партии Справедливая Россия на выборах в Областную думу Свердловской области, однако депутатом не стал.