In a hugely entertaining encounter between the two teams who contested the Champions League final two months ago, Dortmund looked to have lost none of their sharpness while Bayern were badly missing injured winger Franck Ribery and keeper Manuel Neuer.
Dortmund, who played second fiddle to treble winners Bayern in all competitions last season, got off to a perfect start when Reus headed in for the lead in the sixth minute after Bayern keeper Tom Starke failed to hold on to a Sven Bender header.
The Bavarians, with coach Pep Guardiola on the bench for his first competitive game, levelled eight minutes after the restart when Philipp Lahm floated a perfect cross from the right and Arjen Robben headed in at the far post.
But Dortmund struck twice in two minutes with Daniel van Buyten heading in an own goal in the 55th from an Ilkay Guendogan cross.
The Germany international then gave the hosts a two-goal cushion with a fine solo effort and well-struck curled shot from the edge of the box.
Robben cut the deficit seven minutes later, picking up yet another Lahm assist to turn and drill in for his second goal of the evening but new Dortmund signing Emerick Aubameyang set up Reus for his second to complete a successful start to the season in the 86th.
"It was a great game," Dortmund coach Juergen Klopp said. "Three weeks of preparation, a few injured players, a couple of weeks before the season start and every player playing like there is no tomorrow."