A late first-half goal by Benfica's Rodrigo put the reigning champions ahead, with two more driven home by Isco and Alvaro Morata just minutes before the final whistle, despite a brave showing by Norway.
Spain will now face either Italy or the Netherlands in the final on Tuesday.
After a frustrating first half with "La Furia Roja" taking 11 shots at the Norwegian goal without result, Rodrigo neatly turned around a corner to put the ball in the back of the net after a last-minute corner in injury time.
The Spaniards pressed hard again in the second half but had to wait until the last moments before Isco drove home their second in the 87th minute into the top left-hand corner of the net after being set up by Real Madrid's Alvaro Morata who was brought on during the second half.
And true to form, top tournament scorer Morata blasted home the third from a tight angle in the second minute of injury time to seal a well-deserved victory.
Julen Lopetegui's men have been unbeaten in 25 matches at under 21-level, winning 22 and drawing three.
Italy and the Netherlands play in Petah Tikva later .