Borussia Dortmund beat Bayern Munich 3-2 in a thrilling Der Klassiker at the Westfalenstadion on Saturday evening.
Bayern twice led through Robert Lewandowski, only for Marco Reus to peg the reigning Bundesliga champions on each occasion. Paco Alcacer came off the bench to score the winner for the home side and keep Dortmund four points clear of Borussia Monchengladbach at the top of the table, and open up a seven-point gap over third-placed Bayern.
Reus had the first real opening of the game in the 10th minute, and should have given Dortmund the lead. He was clean through with only Manuel Neuer to beat, but he could only fire tamely at the Germany No. 1.
It was Bayern Munich who dominated the ball during the opening exchanges, but they found it difficult to find a way through to the Dortmund defence. The domination finally paid off in the 26th minute as Lewandowski scored against his former club, nodding home from a Serge Gnabry cross.
Franck Ribery almost made it two just after the half hour, but he fired straight at goalkeeper Marwin Hitz.
Dortmund were handed the perfect opportunity to get back into the game just three minutes into the second half when Reus was brought down in the box by Neuer, and the BVB No. 11 picked himself up to send the goalkeeper the wrong way and equalise.
But the scores were level for only three minutes. A neat interchange of play led to Joshua Kimmich standing the ball up for an unmarked Lewandowski to nod home from just a few yards out.
Reus should have scored his second shortly afterward, but after sidefooting past Neuer, Kimmich was on the line to clear.
Lewandowski then thought he had a hat trick, but the flag was up for offside after he found the roof of the net with a powerful strike.
It soon became a pulsating game, and after Jadon Sancho danced past Mats Hummels and rounded Neuer to tee up Alcacer it seemed a certain goal, but the Spain striker needed a touch and Jerome Boateng snuffed out the danger.
Then Achraf Hakimi squared the ball for Reus, who somehow sidefooted over the bar.
But Reus made no mistake in the 67th minute when he superbly guided home Lukasz Piszczek's cross first time to make it 2-2.
The turnaround was completed in the 73rd minute when Alcacer sprung the offside trap from Axel Witsel's pass, and coolly dinked a shot over Neuer to put Dortmund in front for the first time.
Thomas Muller then fired well over as Bayern looked for an immediate response.
Lewandowski had another goal ruled out for offside in the final minute of stoppage time as Dortmund held on for a huge victory.