Borussia Dortmund beat Bayer Leverkusen 3-2 to restore a three-point lead at the top of the Bundesliga on Sunday with their first league win in four matches as they snapped the visitors' four-game winning run.
The Ruhr valley club have 54 points with champions Bayern Munich on 51 after their 1-0 win over Hertha Berlin on Saturday.
Dortmund, who had not won in their previous five games in all competitions, started on the backfoot, with in-form Leverkusen having 75 percent possession in the first 15 minutes.
"It was an extremely intense game and in the first 20 minutes Leverkusen dominated," said Dortmund coach Lucien Favre.
"Then we got our first goal and we started to defend a bit better. We still need to improve further but at least today we did it. That was very important."
The hosts scored when Dan-Axel Zagadou slotted in from close range as their first corner was floated into the box by Raphael Guerreiro.
Kevin Volland drew the visitors level in the 37th after a fine combination with Kai Havertz, but a minute later Dortmund teenager Jadon Sancho sensationally volleyed home a deep cross from Abdou Diallo to put his side back into the lead.
Mario Goetze looked to have killed off the game when he gave Dortmund a two-goal cushion on the hour but Leverkusen defender Jonathan Tah sneaked in at the far post to head home a free kick and revive their chances in the 74th.
Dortmund, who lost 3-0 at Tottenham Hotspur in their Champions League last 16, first leg earlier this month, managed to hold on for victory despite late Leverkusen pressure.
It was also their first win without captain Marco Reus, who was injured earlier this month.
It was a losing return to Dortmund for Leverkusen coach Peter Bosz, who was briefly in charge before being sacked in December 2017.
"We were here to win the game," Dutchman Bosz said. "We did not manage that so we are very disappointed. We need to defend better."
Leverkusen dropped to seventh on 36 points.