RB Leipzig edged out Borussia Dortmund on Saturday evening in a classic at the Westfalenstadion which wasn't short in drama.
The game's first half-chance came after a mere ten seconds, as Max Philipp stole possession after a poor pass from Naby Keita from the kick off. Philipp drive towards goal with his strike being blocked by Pierre-Emerick Aubameyang, before the ball was smashed against him for a goal kick.
Dortmund didn't have to wait too long after for their first goal to reward their fast start, as Aubameyang used his pace to intercept a poor back pass from Stefan Ilsanker, before curling the ball into Peter Gulacsi's bottom left corner, his ninth of the season after four minutes.
RB Leipzig composed themselves and had their first chance of the game just minutes later, Jean-Kevin Augustin denied by Roman Burki who spread himself well in the one-on-one.
Leipzig didn't have to wait too long after to equalise though, when a cheap free-kick in the centre of the park was taken by former Dortmund player Kevin Kampl. His pass was met by Marcel Halstenberg, who rose above Jeremy Toljan on the right. His header back into the centre was nodded in by Marcel Sabitzer, who beat Burki to the ball.
The fast pace of the game was unrelenting in the early stages, and Dortmund had the chance to take the lead again before long. Aubameyang beat the offside trap after a delicious pass from summer signing Andriy Yarmolenko, but Gulacsi spread himself well and smothered the shot from the Gabon international to keep the scores level.
Following the frenetic start to the game, both teams regained their composure, giving themselves and fans a chance to draw breath.
The calm didn't last long though, with Leipzig taking the lead for the first time in the 25th minute when Bruma proved too strong and quick for Jeremy Toljan. He beat the Dortmund full-back twice, getting to the byline before squaring to Yussuf Poulsen through the legs of Burki and beat Sokratis to the ball for a tap-in.
The end-to-end pattern of the game continued as Burki had to play sweeper keeper to head the ball away from the pacy Bruma, before half chances at either end led to a succession of Leipzig corners which amounted to nothing.
Dortmund looked rocked and appeared shaky in defence, troubled by the pace of Augusten and Bruma in behind. It was Leipzig doing all the pressing, forcing Dortmund into sloppy passes as the away side took control.
Yarmolenko had a half chance in the 40th minute, although his effort was way off target as Dortmund looked to regain some control in the game.
They had a better chance two minutes later as Gonzalo Castro was played in by Philipp, who squared the ball to Aubameyang but was denied by Gulacsi, who was there again to block the follow-up.
Dortmund made a double change at half-time, with Julian Weigl and Christian Pulisic coming on to replace Toljan and Sahin, whilst Leipzig made their own change, bringing on Diego Demme in place of Naby Keita.
A change in formation to a back three didn't have the desired effect, as within minutes of the restart, Augusten was brought down by Sokratis resulting in a penalty to Leipzig, who was subsequently sent-off. Dusting himself off, he slotted home - sending Burki the wrong way to give them a 3-1 lead with his third of the season.
Dortmund brought on Marc Bartra to replace Philipp to stem the tide for the 10 men. Dortmund now desperate to find a way back into the game - and did as Leipzig were reduced to 10 men, as two yellows in quick succession for Ilsanker levelled the playing field to a 10-a-side game.
Dortmund were then awarded a belated penalty via the video referee. Aubameyang appeared to be clipped by Leipzig centre-back Dayot Upamecano and despite taking an age to make the decision, the Gabon international had the chance to reduce the deficit and score his second. He did, sending Gulacsi the wrong way in the process.
Leipzig brought on Konrad Laimer in place of Augusten to add more bodies in the centre of midfield to try and defend against the mounting pressure Dortmund were forcing them under.
A goalmouth scramble saw the ball fall to Castro whose shot from the edge of the box was straight at Gulacsi, Leipzig always felt a threat on the counter with the likes of Bruma a threat for Ralph Hasenhüttl's side.
Leipzig looked to be resolute at the back as the game ticked into it's final 10 minutes with Upamecano and co hoping to see the result through. Yarmolenko went close with a glancing header from a wide free-kick, but he again found the grateful arms of Gulacsi as the game threatened to slip away from Bosz's side.
Leipzig made their final change, bringing on Willi Orban for captain Sabitzer to add another centre-back to aid the defensive need for his side, as Dortmund tried to move the ball quickly to make space for one more opportunity.
Ralph Hasenhüttl and his side had to endure an additional five minutes due to the substitutions and red cards to hold on for the three points. He would've been holding his breath as Aubameyang dispossessed Halstenberg on the edge of the box, but found Gulacsi blocking once again, with Yarmolenko skying the follow-up.
And with that Leipzig managed to hold on for the win, inflicting Dortmund's first defeat at home in 41 games. Leipzig climb to third following this victory with Dortmund still top, but their lead now cut to two points as both sides will now prepare for midweek Champions League ties.