Campbell came off the bench to set England on the road to victory
Fraizer Campbell and James Milner struck second-half goals to see off Spain and send England Under-21s into the European Championship semi-finals.
Campbell capitalised on a defensive mistake to turn Javi Garcia and hammer a left-foot shot in from 18 yards.
Milner wrapped it up by slotting in after stunning work down the left from Theo Walcott, who came off the bench.
Milner had earlier seen a penalty brilliantly saved by Sergio Asenjo, but it did not prove costly for England.
Spain were disappointing throughout, a poor imitation of the senior side that has swept all before them over the past couple of years.
England could even afford to be without Walcott for the first hour, manager Stuart Pearce taking the controversial decision to leave him on the bench with Adam Johnson starting down the left.
Even though it's his birthday today, Fabio Capello phoned with congratulations for the players
England boss Stuart Pearce
Pearce was delighted to see his side - who reached the semis of the same tournament two years ago - reach the last four with a group game to spare.
"I'm pleased we're through, but I'm not surprised because I know the character of these boys and it was a gutsy performance," said Pearce.
"It was a great reaction from Theo - but for me it wasn't even a big decision. Getting over the finishing line is what's important and he helped us to do that with a virtuoso performance from the bench.
"Even though it's his birthday today, Fabio Capello phoned me straight after and wanted me to pass on his congratulations to the players."
Johnson linked up well with the lively Kieran Gibbs in the early stages, but there was little of interest happening elsewhere on the pitch.
Until, that is, Nedum Onuoha decided to spark some interest by bizarrely over-hitting a backpass that Joe Hart had to race back and, on the slide, kick off the line in order to spare his team-mate's blushes.
Once that danger was averted England were largely untroubled, with Spain's Barcelona striker Bojan Krkic again hugely disappointing and the creative Jurado badly suffering from a lack of support.
England should have been in front just after the half-hour mark, as Spain gave the ball away in midfield and Milner raced into the area, tricking his way past Javi Garcia and falling as the defender caught his trailing leg.
Milner picked himself up and dusted himself down to take the penalty, only to see Sergio Asenjo dive away to his right and superbly claw the ball away from his net.
But England continued to probe for an opening and, five minutes after Walcott replaced Johnson, they got their breakthrough.
Another Spanish mistake gifted possession to Campbell 25 yards out and he kept his composure expertly to cut inside Javi Garcia and lash past Sergio Asenjo.
Six minutes later and it was all over, Walcott showing an extraordinary turn of pace to race down the left and pull the ball back for Milner to convert.
Pearce's men now face Germany on Monday in Halmstad in their last group game, with the semi-finals to be played on Friday 26 June.
Spain U21: Sergio Asenjo, Azpilicueta, Javi Garcia, Torrejon, Monreal, Javi Martinez, Mario Suarez, Raul Garcia, Adrian, Jurado, Bojan. Subs: Roberto, Miguel Torres, Sergio Sanchez, Marcano, Chico, Pedro Leon, Sisi, Granero, Diego Capel, Xisco, Jonathan Pereira, Adan.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.