Raheem Sterling's double, wedged either side of Marcus Rashford's strike, had put England in cruise control by the interval of Monday's Nations League encounter in Seville.
It was the first time in a competitive match that Spain conceded three goals at home, and left the hosts with a huge hole to climb out of at the half.
Spain – 2-1 winners in the reverse fixture in September – rallied through substitute Paco Alcacer's goal, before Jordan Pickford was fortunate Rodrigo Moreno did not capitalise on his error, and that the referee did not award a penalty for the goalkeeper's subsequent challenge.
Sergio Ramos pulled another one back late on, but it was not enough to prevent Spain slumping to their first competitive defeat on home turf in over 15 years, and former Barcelona head coach Luis Enrique, who did not make any changes at the break, did not hold back with his criticism.
"The first half, atrocious, it has to be recognised. We arrived late pressing, the first goal killed us," he said.
"We made so many individual errors. It's bad to say it, but it was a miracle in the break.
"The normal thing would have been to kill the players, but I reinforced them, and didn't change any of them.
UEFA Nations League (@UEFAEURO) October 15, 2018
"With 2-0, sitting back and coming out on the break, England are dangerous. A group with two World Cup semi-finalists is not easy.
"Now we continue to depend on ourselves, we have to go to Croatia and win [to win the group].
"I said great teams have suffered. We forced the opposition back, and it's a shame we didn't score earlier because we would have done the 3-3 and the comeback in the Villamarin."
Spain face Croatia in Zagreb on November 15, while England host the World Cup runners-up at Wembley three days later.