En 2010, Puyol formó parte de la selección española que se proclamó campeona del Mundo el 11 de julio de 2010 en Johannesburgo. El 1 de agosto de 2010 anunció su continuidad en la selección española, con la intención de disputar la Eurocopa 2012 de Polonia y Ucrania. En las semifinales del 7 de julio de 2010 marcó un histórico gol de cabeza ante Alemania, después de un saque de esquina de Xavi Hernández, que daría el pase a España a la final de la Copa del Mundo, en la que se impusieron por 1-0 a Países Bajos.