Karierę piłkarską rozpoczynał w LZS Rudawa. Jeszcze jako junior przeniósł się do Wisły Kraków. W 1978 r. wywalczył z nią mistrzostwo Polski, występował również na mistrzostwach świata w Argentynie, gdzie Polacy zajęli piąte miejsce. W reprezentacji Polski grał w sumie 32 razy. W 1985 r. wyjechał do Stanów Zjednoczonych. Odbył staże trenerskie w AS Roma, Bayerze Leverkusen i Barcelonie.
Jako trener prowadził m.in. trzecioligowy Świt Krzeszowice, Zagłębie Lubin i Jagiellonię Białystok. Potem dwukrotnie trenował Wisłę, z którą w 2000 r. zdobył wicemistrzostwo, a w 2001 r. mistrzostwo Polski. W kwietniu 2007 r. został odwołany ze względu na słabe wyniki zespołu, który zajmował dopiero szóste miejsce w tabeli Orange Ekstraklasy.
Obecnie jest asystentem selekcjonera reprezentacji polski, Leo Benhakkera.