Raheem Sterling gave England the lead against the run of play in the 16th minute by finishing off a swift counter-attack and Marcus Rashford fired into the top corner for the second on the half-hour after a superb pass from captain Harry Kane.
Sterling, who had not got an England goal for three years, struck again from another Kane assist to give Gareth Southgate's side a big halftime lead against Spain, who had scored 12 goals in their last three games and beat England 2-1 last month.
Captain Sergio Ramos got a second for Spain with a diving header in the eighth minute of added time with the last action of the match, leaving his side tasting their first defeat over 90 minutes since they were beaten 2-0 by Italy in Euro 2016.
Gareth Southgate fielded the youngest England starting 11 this century and his side had to withstand a whirlwind of early Spain attacks at a packed Benito Villamarin stadium in Seville, with Pickford using his head to thwart Marcos Alonso.
England took the lead through a lightning quick break involving Kane, Sterling and Rashford, and the three forwards had their footprints all over the three goals which led to the home fans booing their team off the pitch at the interval.
Luis Enrique's side were a different prospect in the second half and kept threatening Pickford's goal, with Marco Asensio smashing wide and Alonso heading against the bar just before Ramos struck, but England hung on to claim a first win away to Spain since a Gary Lineker-inspired 4-2 victory in 1987.