Bayern Munich set a new Bundesliga record of eighth straight wins but clashes in Dortmund, which saw 200 fans arrested after a wrecking spree, overshadowed the achievement.
Bayern hammered Fortuna Duesseldorf 5-0 to stay top.
It was also the 300th Bundesliga victory for coach Jupp Heynckes thanks to goals by Croatia's Mario Mandzukic, Brazil's Luiz Gustavo and Rafina, plus two from Germany's Thomas Mueller.
"Of course, I am delighted," said Heynckes. "We played fantastic football from start to finish."
Despite second-placed Eintracht Frankfurt and Schalke 04, third, also winning, Bayern remain five points clear at the top.
However, it was the violence-scarred 141st Ruhr derby between champions Borussia Dortmund and Schalke that dominated the headlines.
As well as the 200 arrests, eight police officers were hurt as fans went on the rampage.
Schalke won the game 2-1 at the Signal Iduna Park stadium, which was an 80,000-sell-out.
Dortmund fans demolished a restaurant near the ground and a police vehicle was also damaged as home fans pelted officers with paving stones, a police spokesman said.
A group of 600 Schalke fans was also attacked by masked Dortmund supporters armed with bottles and paint bombs when they arrived at the stadium.
Tensions had escalated around noon and police used a water cannon to stop Schalke fans pulling a fence down.
Around 100 Schalke fans were involved in brawls in the morning on the way to the stadium, firing flares.
More than 1,000 police officers were deployed for the game, twice as many as are on duty for a normal Bundesliga game.
"Perpetrators from Dortmund and Schalke have purposely undermined our security plans with their only goal being violent clashes with bystanders and rival fans," said Dortmund's police chief Dieter Keil.
On the pitch, Schalke took an early lead when Dutch forward Ibrahim Afellay volleyed home on 14 minutes.
Schalke doubled their lead two minutes into the second half when an excellent pass from Lewis Holtby on the halfway line put midfielder Marco Hoeger away.
The 23-year-old sprinted clear and drilled the ball past Borussia's despairing goalkeeper Roman Weidenfeller.
Poland striker Robert Lewandowski headed home on 55 minutes to put the hosts back in the game, but it was not enough.
In Duesseldorf, Bayern went ahead on 28 minutes after a Franck Ribery pass split the defence and found striker Mandzukic unmarked on 28 minutes to slot home.
Bayern, enjoying 80 per cent possession, doubled their lead on 36 minutes.
Mueller fired the ball into the box and Brazil midfielder Gustavo enjoyed a simple-tap in with Duesseldorf goalkeeper Fabian Giefer at his feet, desperately trying to scramble away the danger.
Mueller grabbed Bayern's third on 55 minutes after a good pass from Ribery.
Fortuna's defence folded again as Mueller grabbed his second on 86 minutes and Rafinha claimed the fifth a minute later.Topics: Bundesliga Bayern Munich Schalke 04 Borussia Dortmund Violence Soccer