W 1991 bezskutecznie kandydował do Sejmu z listy SLD. Od 1993 do 2005 sprawował mandat posła na Sejm II, III i IV kadencji z ramienia Sojuszu Lewicy Demokratycznej z okręgów gdańskich: nr 11 i nr 25. W latach 1990–1999 należał do SdRP (do 1991 przewodniczył jej w Gdańsku, a następnie był wiceprzewodniczącym i od 1996 do 1997 wiceprzewodniczącym jej rady wojewódzkiej), z którą przystąpił następnie do partii SLD. W rządzie Leszka Millera pełnił od 2003 do 2004 funkcję sekretarza stanu w Ministerstwie Edukacji Narodowej. Po 2005 wrócił do działalności związkowej jako rzecznik prasowy pomorskiego okręgu ZNP, w 2006 zasiadł też w prezydium rady wojewódzkiej OPZZ. Ponadto w latach 2005–2007 wykładał matematykę w Wyższej Szkole Społeczno-Ekonomicznej w Gdańsku, a w 2006 został jej wykładowcą w Grudziądzkiej Szkole Wyższej. Był również wykładowcą prawa oświatowego w Akademii Wychowania Fizycznego i Sportu w Gdańsku, a także w gdańskiej szkole wyższej Ateneum.
W 1998 został wybrany na radnego sejmiku pomorskiego I kadencji. W 2005, 2007, 2011 i 2015 kandydował ponownie do Sejmu, w 2014 do rady miejskiej w Gdańsku, a w 2018 na radnego województwa.