Bayern, who had won their last 14 Bundesliga matches, had five players booked and fullback Rafinha sent off in a surprisingly feisty encounter which saw their goalkeeper Manuel Neuer save a Robert Lewandowski penalty.
With Bayern already having won the title and Dortmund guaranteed a Champions League place next season, there had been fears that the match would be a damp squib as the teams spared themselves for Wembley.
In front of an 80,000-strong crowd, the first half was relatively peaceful but, even with nothing at stake, the increasingly bitter rivalry between the two clubs repeatedly came to the fore in the second half.
Controversy erupted on the hour when Jerome Boateng was judged to have handled the ball as he tried to block a Nuri Sahin shot and a penalty was awarded amid angry Bayern protests.
Lewandowski's shot was saved by Neuer, but the match boiled over again a few minutes later when Rafinha, who had just been booked, elbowed Jakub Blaszczykowski as they tussled for the ball.
The Brazilian was sent off for a second bookable offence, causing more Bayern protests as the players angrily surrounded the referee, and Rafinha poked his finger in Blaszczykowski's face before leaving the pitch.
Dortmund coach Jurgen Klopp remonstrated with Rafinha, which in turn caused an angry reaction from Bayern's sporting director Matthias Sammer.
There were further niggly exchanges, and Bayern substitute Emre Can was booked for a rugby-tackle on Julian Schieber.
"It's normal for these things to happen," Klopp told Sky on the touchline. "People were talking about a friendly but once the game gets underway, it's different. It was a tough battle, situations arise, these things happen."
"I told Rafinha that he should stay away from Jakub, Sammer then told me that I should not talk to the players. Then I said that Rafinha poked him in the face."
Borussia Dortmund made five changes to the team which started the Champions League semi-final tie at Real Madrid on Tuesday and Bayern seven to the side which faced Barcelona on Wednesday and won 3-0.
Dortmund went ahead in the eleventh minute when Kevin Grosskreutz volleyed in Blaszczykowski's cross at the far post.
Mario Gomez headed Bayern level on 23 minutes when he headed in unmarked at the far post from Rafinha's cross.
Bayern are unbeaten in four meetings with Dortmund this season, having beaten them in the Supercup and German Cup, while both Bundesliga meetings ended in draws.
"After last week's result it wasn't easy to get back into the swing of things," said Bayern coach Jupp Heynckes.
"It was a very intensive game where neither side gave anything away. Beforehand, people said that it would be a boring match with so many Bayern players missing, but that clearly wasn't the case." — Reuters