Dwukrotnie wybierano go na radnego Warszawy (w 1998 i 2002). W okresie 1999-2002 sprawował funkcję wiceprezydenta miasta. W 2002 ponownie został wybrany radnym. Od listopada 2003 do stycznia 2004 zajmował stanowisko podsekretarza stanu w Ministerstwie Infrastruktury. Od 2004 roku pełnił funkcję posła, zastąpił on na tym stanowisku zmarłego marszałka seniora Aleksandra Małachowskiego. W polityce od 1990 roku. Początkowo w PZPR, następnie w SdRP. W 1999 roku zaangażował się w tworzenie SLD. W 2004 roku zastąpił Józefa Oleksego na stanowisku przewodniczącego Mazowieckiej Rady SLD. Z SLD odszedł z powodu konfliktu z nowym przewodniczącym partii Wojciechem Olejniczakiem.
W lipcu 2005 po opuszczeniu SLD poparł Andrzeja Leppera i Samoobronę, nie wstąpił do tej partii i nie ubiegał się o reelekcję. W 2007 wspólnie z Leszkiem Millerem rozpoczął tworzenie struktur Polskiej Lewicy (jest Sekretarzem Generalnym partii).