Henrikh Mkhitaryan inspired Borussia Dortmund to a 3-1 win at bitter rival Schalke in the Bundesliga on Saturday, while Bayern Munich survived a scare to beat Hertha Berlin 3-2.
Mkhitaryan was involved in all of his side's goals, after the 143rd Ruhr derby was delayed due to flares causing thick yellow smoke in the Dortmund fans' stand.
As referee Knut Kircher led the teams back off the pitch, Dortmund goalkeeper Roman Weidenfeller appealed to the hooded supporters to desist, only to have lit flares thrown in his direction. Dortmund fans were also blamed for rioting before the game.
"They're not pretty pictures, to put it mildly," Dortmund coach Juergen Klopp said. "You feel shame at times like this. I'm often proud of our fans but that was disruptive in the truest sense of the word. We won despite it, not because of it."
Once play got underway, Dortmund seized the initiative. Mkhitaryan sent Marco Reus through to cross for Pierre-Emerick Aubameyang's opening score in the 14th minute.
Schalke had the chance to equalize after Neven Subotic conceded a penalty against Christian Fuchs in the 30th, but Kevin-Prince Boateng failed to convert against his former club when Weidenfeller saved his spot kick.
Mkhitaryan led a counterattack to set up Nuri Sahin's wonderful 20-meter (yard) strike in the 51st, and the Armenia midfielder led another in the 74th for Jakub Blaszczykowski to seal the result, 12 minutes after the 18-year-old Schalke substitute Max Meyer pulled one back on a rebound.
League leader Bayern had to come from behind to win and stretch its unbeaten league run to 35 games, while being grateful not to concede a penalty in injury time. Hertha protested when Adrian Ramos fell under last defender David Alaba's challenge on the edge of the box.
Ramos had scored with a header from Per Ciljan Skjelbred's corner in the fourth minute, and Hertha might have been 2-0 shortly afterward, when Anis Ben-Hatira struck the crossbar.
There was more bad news for Bayern when Toni Kroos and Arjen Robben both went off with groin problems within two minutes of each other. But the substitutes, Mario Goetze and Mario Mandzukic, managed to turn the game around.
"The changes decided the game," Hertha coach Jos Luhukay said.
Mandzukic scored in the 29th, three minutes after going on, with a header from Franck Ribery's free kick.
Then Bastian Schweinsteiger sent in another free kick for the Croat to score a second with another header in the 51st.
Goetze made it 3-1 with a header three minutes later, four minutes before Ben-Hatira pulled back what proved to be a consolation for the promoted side, one of the few not to appear intimidated in Munich this season.
"Berlin were the best team we've faced," Bayern coach Pep Guardiola said. "For us, the will was there, but our legs didn't function well. The players need time to relax, they were tired. Now that we have a whole week (without European or German Cup games) we can better implement our ideas."
Ribery set a Bundesliga record of playing in 39 straight games without defeat, breaking Holger Hieronymus' 30-year-old record set while playing for Hamburger SV, while Bayern is just one game from tying Hamburg's record 36-match run without losing.
Bayer Leverkusen also came from behind to beat Augsburg 2-1 and stay level on points with Dortmund, one behind Bayern.
Andre Hahn put the visiting side ahead with a fine volley in the 24th, only for Simon Rolfes to equalize in the 34th, and Emre Can to pop up with the winner eight minutes from time.
"The team fought against the tiredness and were rewarded in the end," said Leverkusen coach Sami Hyppia, referring to his side's 4-0 Champions League win over Shakhtar Donetsk on Wednesday.
Mainz defeated bottom side Eintracht Braunschweig 2-0, thanks to goals in either half from Japan striker Shinji Okazaki.
Hannover had an afternoon to forget against Hoffenheim, losing 4-1 at home and finishing with nine players.
Hoffenheim striker Sejad Salihovic scored after a hotly disputed penalty decision in the 10th.
Mame Biram Diouf was shown a yellow card for protesting, and the Senegalese was sent off two minutes later when he got another yellow for diving. TV replays showed it was a debatable decision.
It got worse for the home side six minutes later when Kai Herdling scored with a header.
Salif Sane gave Hannover some hope in the 56th, only for Roberto Firmino to score twice in three minutes by the 64th, when Marcelo was sent off for his furious reaction to the referee.
"We have to keep our tempers better under control. We have to talk about that," said Hannover coach Mirko Slomka.
Wolfsburg was hosting Werder Bremen in Saturday's late game.