W wyborach parlamentarnych w 2007 z listy Platformy Obywatelskiej został wybrany do Sejmu VI kadencji, otrzymując w okręgu bydgoskim 6441 głosów. Zasiadł m.in. w komisji śledczej ds. nacisków. W 2010 został sekretarzem regionu kujawsko-pomorskiego Platformy Obywatelskiej. W 2011 decyzją zarządu krajowego PO został przesunięty z proponowanego 4. na 7. miejsce na liście wyborczej w okręgu bydgoskim. W wyborach w tym samym roku uzyskał reelekcję, otrzymując 12 600 głosów (drugi wynik na liście kandydatów PO w tym okręgu).
W 2015 ponownie został wybrany do Sejmu (z wynikiem 15 951 głosów). W Sejmie VIII kadencji został zastępcą przewodniczącego Komisji Ustawodawczej oraz członkiem komisji śledczej ds. Amber Gold, pracował też w Komisji Samorządu Terytorialnego i Polityki Regionalnej (2015–2016). W listopadzie 2015 został powołany na funkcję ministra sprawiedliwości w gabinecie cieni utworzonym przez Platformę Obywatelską.
Bezskutecznie kandydował w wyborach do Parlamentu Europejskiego w 2019. W tym samym roku w wyborach parlamentarnych pełnił funkcję szefa sztabu wyborczego Koalicji Obywatelskiej.