Gladbach then dominated proceedings and scored after some excellent work from Ibrahima Traore, crossing the ball for Lars Stindl to control well and he managed a shot on goal but Lukas Hradecky could only parry it to Raffael, who slotted the ball home from close range.
Granit Xhaka then had a chance to double the away side's lead after the goalscorer Raffael pulled the ball back to the Swiss international but the midfielder dragged his effort wide.
Sommer would then give away a penalty after a long ball ran through for Luc Castaignos to chase, only to be tripped up by the Swiss goalkeeper.
Frankfurt captain Alexander Meier stepped up to take the spot kick and the club's top scorer powered his penalty past Sommer to equalise.
After the break, Gladbach reasserted their dominance as Dahoud scored his second goal for the club after striking the ball from outside the box and a deflection took it into the back of the net.
The young German then slid Raffael through one-on-one and the Brazilian kept his cool to slide the ball underneath the onrushing goalkeeper.
Hahn would make it five in added time, with the German finding himself on the end of a cross to slot the ball home and compound a bad afternoon for Frankfurt.
Gladbach rise to 10th in the Bundesliga table after winning their last four while Frankfurt drop to 13th.