Licenciado em Direito pela Faculdade de Direito da Universidade de Coimbra, foi dirigente da Associação Académica de Coimbra.
Tornou-se militante da Juventude Social Democrata, aderindo posteriormente ao Partido Social Democrata.
Foi eleito deputado à Assembleia da República nas legislaturas iniciadas em 1987, 1991, 1995, 1999, 2002, 2005 e 2009, sempre pelo círculo de Braga.
Deixou o mandato de deputado sempre que foi chamado a cargos governativos: foi Secretário de Estado da Juventude do primeiro governo de maioria absoluta de Aníbal Cavaco Silva, entre 1990 e 1991. Mais tarde, entre 2002 e 2005, integrou os governos de coligação PSD/CDS-PP de Durão Barroso e de Pedro Santana Lopes, como Secretário de Estado da Justiça.
Na direção de Luís Marques Mendes, ocupou o cargo de Secretário-Geral do PSD, sendo eleito no XXVII Congresso Nacional, em Pombal, nos dias 8, 9 e 10 de abril de 2005 e, reeleito no XXIX Congresso Nacional, na Póvoa do Varzim, nos dias 19, 20 e 21 de maio de 2006.
Depois de Pedro Passos Coelho ter sido eleito Presidente, passou a liderar o Grupo Parlamentar do PSD.
Nas eleições legislativas de 2011 encabeçou a lista do partido no círculo eleitoral de Braga, sendo depois nomeado ministro da Administração Interna do XIX Governo Constitucional.
Afastou-se da vida política em 2014, após ter sido acusado de três crimes de prevaricação e um de tráfico de influência no caso dos vistos gold.
Atualmente, era comentador do programa O Princípio da Incerteza, da CNN Portugal, juntamente com Pacheco Pereira, Alexandra Leitão e o moderador Carlos Andrade.