After a goalless opening 25 minutes, Portugal took control of the contest as the brilliant Bernardo Silva, Ricardo Pereira and Ivan Cavaleiro all struck before the break.
Germany had no answer to the Portuguese masterclass and fell further behind as Joao Mario struck inside the opening minute of the second half.
A miserable evening got even worse for the Germans as Ricardo Horta made it 5-0 and substitute Leonardo Bittencourt was sent off for a second booking.
Portugal, who have never won the tournament, will Sweden in the final on Tuesday after they beat Denmark 4-1.
The current Portuguese crop certainly look well-placed to go one better than the class of 1994, who made the final, after inflicting Germany’s heaviest ever defeat at this age group.
Rui Jorge’s side dominated from the outset, recovering impressively from Tiago Ilori’s last-minute withdrawal and hitting the post in the 15th minute.
Man-of-the-match William Carvalho played a fine pass down the right flank, with winger Ricardo cutting back and squaring for captain Sergio Oliveira to hit a low strike which came back off goal frame.
A wayward Johannes Geis free-kick was the best Germany could muster by the time Portugal turned their dominance into a deserved 25th-minute opener.
Unsurprisingly Carvalho was involved, starting a move which resulted in Cavaleiro playing a deflected through ball for Silva to rifle past Marc-Andre ter Stegen.
The Barcelona goalkeeper was soon picking the ball out of his net again, with Silva’s corner from the right glanced on for Ricardo to net from close range.
Germany attempted to rally and Joshua Kimmich produced a stinging shot that Jose Sa parried into the path of Nico Schulz, only for the winger to hammer over.
The Portugal goalkeeper did better when stopping a fierce Amin Younes strike at the end of a first half which would soon get worse for Horst Hrubesch’s men.
Ricardo’s cross all too easily found Mario at the back post, with the Sporting midfielder’s cutback expertly thumped home by Cavaleiro.
The stoppage-time goal was followed up a minute into the second half, with Silva and Ricardo involved before Mario struck home via a deflection.
There was a slightly concerning moment as Silva limped off after 50 minutes, but it did little to change the way this match was going.
Horta wasted a glorious chance for a fifth but made no mistake in the 71st minute, turning Joao Cancelo’s cross past Ter Stegen.
Bittencourt ensured things would get worse for Hrubesch’s side, with the substitute foolishly collecting two bookings within 15 minutes of his introduction – although the damage by that point had been done.