The 10 men of Duisburg held on to beat Energie Cottbus and reach the final of the DFB-Pokal.
A 24th-minute header from Stefan Maierhofer and a Srdjan Baljak strike had Duisburg cruising, but things changed with 13 minutes left when Bruno Soares hauled down Jules Remenick in the area, earning a red card and allowing Nils Petersen to get one back from the penalty spot.
Duisburg then had to hang on through some nervous final moments to secure the win.
The opening goal came in scrappy circumstances as Uwe Hunemeier tried to clear the ball in an awkward position, and succeeded only in teeing up Maierhofer for an easy header.
Duisburg's second was better as Baljak finished from close range after a great pass from Ivica Banovic.
But with the hosts looking comfortable, everything changed with the penalty.
Finding themselves a man down and only one goal up, Duisburg came under heavy pressure.
Hunemeier came close to making up for his mistake on the opening goal but saw his goalbound header cleared off the line by Olivier Veigneau in the 89th minute.
And moments later Jiahyi Shao hit the right-hand post.
However, Duisburg's luck was in and they hung on for a victory which will set up a cup final meeting with either Bayern Munich or Schalke, who meet tomorrow.