Puyol ha vinto la sua prima partita per la Spagna il 15 novembre 2000 contro i Paesi Bassi e è rimasto un giocatore fisso negli anni successivi. Ha giocato per il suo paese alle Olimpiadi del 2000, alla Coppa del Mondo del 2002, all'Euro 2004
, Coppa del Mondo 2006, Euro 2008, Coppa delle Confederazioni FIFA 2009 e Coppa del Mondo 2010.