Puyol pelasi ensimmäisen kerran Espanjan maajoukkueessa 15. marraskuuta 2000 Alankomaita vastaan, ja hän oli säännöllinen pelaaja seuraavia vuosia. Hän pelasi maansa puolesta vuoden 2000 olympialaisissa, vuoden 2002 MM-kisoissa, Euro 2004
, 2006 MM-kisojen, Euro 2008, 2009 FIFA Confederations Cup ja 2010 MM-kisojen.