Bundesliga side Freiburg dominated Hamburg, who have spent the last four seasons in the second division, with Nils Petersen, Nicolas Hoefler and Vincenzo Grifo scoring in the opening 35 minutes.
Hamburg managed a consolation goal with two minutes left when Robert Glatzel headed in a cross.
There will be a new German Cup winner when the final is held at Berlin's Olympic Stadium on May 21st.
Neither Freiburg, nor Union Berlin and RB Leipzig who met in other semi-final, have previously lifted the trophy.
Hamburg were the only club in the semi-finals to have already won the cup, with the last of their three victories coming during the fallen giants' glory days of the 1980s.