Posteriormente, fue uno de los veintitrés seleccionados para la Eurocopa 2008. En su debut en el torneo, el 10 de junio de 2008, Villa anotó un "hat-trick" ante Rusia en la victoria por 4-1 a favor de España. Este hecho lo convirtió en el séptimo jugador en lograr tres tantos en un mismo partido de una fase final de la Eurocopa, siendo el último que lo había logrado el neerlandés Patrick Kluivert. En el segundo partido de la fase de grupos, disputado el 14 de junio contra Suecia, marcó el gol que daba el triunfo por 2-1 en el minuto 92 de partido, clasificando a España para los cuartos de final. En dicha ronda, contra Italia, el partido finalizó 0-0 y el vencedor se tuvo que dirimir en la tanda de penaltis, donde Villa anotó el primero de los lanzamientos que dieron el pase a España para disputar la siguiente eliminatoria. En semifinales, contra Rusia, sufrió una microrrotura fibrilar tras ejecutar un tiro libre que le impidió finalizar el encuentro y participar en la final de la competición, donde España consiguió la segunda Eurocopa de su historia al derrotar a Alemania por 1-0. A pesar de ello, terminó siendo el máximo goleador con un total de cuatro tantos y fue elegido como uno de los componentes del equipo ideal del torneo.