Narodil se 28. září 1944 v Kolíně. Po maturitě na ekonomické škole mu z politických důvodů neumožnili pokračovat ve studiu na vysoké škole a až po čtyřech letech začal dálkově studovat Vysokou školu ekonomickou v Praze, kterou dokončil v roce 1969.
V období Pražského jara vstoupil do komunistické strany vedené Dubčekem, ale po sovětské okupaci byl vyloučen kvůli kritice nastupujícího režimu. V červenci 1968 se pokusil vstoupit do obnovované sociální demokracie, jejíž vznik však tehdejší vláda znemožnila. Následně měl potíže se zaměstnáním a po čtrnáct let pracoval v tělovýchovné organizaci, kde založil prognostické centrum. To bylo v roce 1984 zrušeno kvůli kritickým studiím o vývoji společnosti. Další zaměstnání našel v zemědělské organizaci, kde se situace opakovala a v roce 1989 byl propuštěn. Během tohoto období se věnoval prognostickému modelování společenských systémů. V roce 1989 se aktivně zapojil do Občanského fóra, v jeho levicím křídle.
V roce 1990 byl zvolen poslancem federálního shromáždění a stal se předsedou rozpočtového výboru. Úzce spolupracoval s Klubem sociálně demokratické orientace. V letech 1990 až 1993 působil také jako vědecký pracovník Prognostického ústavu ČSAV. V roce 1992 vstoupil do ČSSD a ve volbách téhož roku byl znovu zvolen poslancem Federálního shromáždění. Zároveň byl zvolen předsedou MěV ČSSD v Praze, v roce 1993 předsedou celé ČSSD na hradeckém sjezdu a v této funkci byl potvrzen i na sjezdech v letech 1995 a 1997. V dubnu 2001 ho jako předseda ČSSD nahradil Vladimír Špidla.
V parlamentních volbách 1996 kandidoval v severomoravském kraji, kde byl zvolen poslancem Poslanecké sněmovny a 27. června 1996 se stal jejím předsedou.
V předčasných volbách do Poslanecké sněmovny v červnu 1998 byl znovu zvolen v severomoravském kraji, ale v dalších volbách v červnu 2002 již nekandidoval.
17. července 1998 byl jmenován předsedou vlády, kterým byl až do 15. července 2002. V lednu 2003 ho ČSSD navrhla na prezidenta, ale ve volbě 24. ledna vypadl již v prvním kole, protože někteří členové strany hlasovali pro jeho protikandidáty.
Později ostře kritizoval některé členy sociální demokracie, zejména Grosse a Špidlu, a po neshodách i s Jiřím Paroubkem v březnu 2007 z ČSSD vystoupil.
Bydlí v Lánech a na Vysočině v Novém Veselí, je ženatý s Ivanou a má dvě děti: dceru Kateřinu narozenou v roce 1994 a syna Davida z prvního manželství.