Gladbach opened the scoring on the 11th minute when Nico Elvedi converted from a set-piece by Jonas Hoffman. Elvedi scored with a towering header to give his side the lead.
However, the home side’s advantage did not last long and Dortmund got back into the game on the 22nd minute through Erling Haaland. The Norwegian striker was set up by Jadon Sancho.
Haaland doubled his team’s advantage just six minutes later and his chance was created by Sancho once again.
Gladbach levelled the scores once again in the first half through Nico Elvedi on the 32nd minute.
With the score tied at 2-2, Rami Bensebaini gave the home side their lead when he was set up by Florian Neuhaus four minutes into the second half.
Gladbach had other chances to increase their advantage but Dortmund managed to stay in the game.
Marcus Thuram returned from his suspension and wrapped up the scoring for the home side on the 78th minute with a header.
The win tonight takes Gladbach ahead of Dortmund in the League table with 31 points from 18 matches. Dortmund are fifth in the table just two points behind Gladbach.
Both teams have a great chance of securing Champions League qualification and it will be interesting to see who manages to sneak into the top four by the end of the season.