Alexander Sorloth was on target for Leipzig late on, but it wasn’t enough for Julian Nagelsmann’s side who suffer only their second defeat of the campaign.
For the first time this season, Dortmund named the same starting line up from the previous week’s victory over Wolfsburg, with a place on the bench for youngster Youssoufa Moukoko after injury.
Leipzig, meanwhile, made one change from their win over Stuttgart as Yussuf Poulsen came in for the injured Kevin Kampl, with Emil Forsberg moving from leading the line to playing in behind the striker.
There was little to separate the sides in the early exchanges, with play tending to be between the two penalty areas. Mats Hummels did well to prevent Dani Olmo from getting a shot away after a neat turn away from Thomas Delaney before Manuel Akanji cleared Tyler Adams’ dangerous cross.
The Black & Yellows played with great discipline and hardly left any room for Leipzig to play into, but Edin Terzic’s side were dealt a blow when Axel Witsel caught his left foot in the turf and had to make way for Emre Can.
Though the hosts attacked with five players – Angelino and Amadou Haidara pushed up high and were at times even level with the front three – they could not manage to find a way through. Raphael Guerreiro’s clearance wasn’t the best and it fell straight to Olmo on the edge of the box, but his volley dipped just over the bar as the first half drew to a close.
BVB turn the screw
Having not mustered an attempt on goal in the first half, Dortmund came flying out the traps at the start of the second half. Sancho threaded a through ball to Marco Reus, but his near post strike was palmed around the post by Peter Gulacsi.
Shortly afterwards, BVB got the breakthrough. Haaland and Reus linked up brilliantly with a one-two. Haaland couldn’t be stopped on the right and cut the ball square to the skipper, who flicked the ball behind him and into the path of Sancho who fired a low first time effort into the bottom corner.
The visitors were in control at this point, with Haaland seeing an effort blocked by Dayot Upamecano before the Norwegian striker had a shot turned onto the bar by the fingertips of Gulacsi after good work from Sancho.
With Dortmund looking likely to double their lead, Leipzig switched their system and brought on fresh legs in a bid to regain some control over the game – and might have scored themselves when Olmo skipped past Guerreiro but saw his low drive across goal come back off the post.
However, it was the Black & Yellows who struck next. Haaland beat four opponents before finding Sancho out on the left. The English starlet exchanged passes with Guerreiro and Can before curling a cross to the far post, where Haaland rose highest on the edge of the six yard box and headed home from close range.
Upamecano then denied Dortmund from adding to their lead after a last ditch block to deny Reus, but it didn’t stop Terzic’s side from scoring a third with six minutes to go.
Reus played a neat ball through into the path of Haaland, and he skipped past the committed Gulacsi before tapping into an empty net.
There was to be some cheer for home supporters, however, as they denied Dortmund a clean sheet with a late consolation. Angelino lifted the ball in from the left and substitute Sorloth saw his initial header brilliantly saved by Roman Burki, but the striker slammed the ball into the roof of the net from the rebound.