Dortmund have found an upturn in league form in recent weeks and extended that to the third round of the cup with a 2-0 win thanks to a brace from Ciro Immobile.
Dresden had done well to hold Dortmund goalless at half-time, but Immobile scored just five minutes into the second period and added his second in injury time.
The win did come at a cost though, as Marco Reus was taken off in the first half with what appeared to be an injury.
Bayer Leverkusen were also 2-0 winners in the end over Kaiserslautern, though the second division side were able to push the hosts all the way into extra-time.
Hakan Calhanoglu struck a free-kick and substitute Stefan Kiessling got the second either side of the extra-time break for Leverkusen, who gained revenge for their defeat to Kaiserslautern in the quarter-finals last season.
In the night’s only all-Bundesliga clash, Cologne were beaten 2-1 by Freiburg, though they nearly took the tie into extra-time as well.
Anthony Ujah turned into his own net to hand Freiburg the lead on 17 minutes, while Vladimir Darida made it 2-0 to Freiburg just a minute later.
Darida then missed a second-half penalty and Acosta Deyverson got on the scoresheet for Cologne late in the game to keep their hopes alive, but Freiburg hung on.
Bundesliga mid-table club Hoffenheim had no such problems against 2.Bundesliga outfit Aalen, beating them 2-0 to advance to the last eight.
Eugen Polanski gave Hoffenheim a 15th-minute lead before Kevin Volland scored before the hour mark to settle things for the top-flight side.