Borussia Dortmund 2 RB Leipzig 3: Two penalties, two reds in five-goal thriller

Borussia Dortmund's unbeaten start to the Bundesliga season ended in dramatic fashion as RB Leipzig came from behind to snatch a heart-stopping 3-2 away win.

Both sides had players sent off in the second half but Leipzig held their nerve to inflict a first defeat in eight matches on Peter Bosz's men.

The visitors were forced to do it the hard way after falling behind to Pierre-Emerick Aubameyang's early opener with Marcel Sabitzer and Yussuf Poulsen scoring to turn the contest on its head.

And Ralph Hasenhuttl's men looked on course for their fifth victory of the campaign when Sokratis Papastathopoulos was shown a straight red for conceding a penalty which Jean-Kevin Augustin converted.

Stefan Ilsanker also received his marching orders, though, and Aubameyang was able to reduce the deficit from the spot as he moved ahead of Robert Lewandowski in the scoring charts.

But, after recording their first ever Bundesliga victory in this fixture last season, it was Leipzig who were yet again celebrating another milestone moment.

There was a frenetic tempo from the outset and it was Dortmund who scored first through Aubameyang.

The striker dispossessed Ilsanker, raced through on goal and coolly buried a fourth-minute opener beyond Peter Gulacsi.

Leipzig should have found an instant response through Augustin, but Roman Burki produced a stellar one-on-one save with his legs.

Hasenhuttl's side only had to wait a matter of moments for an equaliser, though, as Marcel Halstenberg climbed high to head a free-kick into the path of Sabitzer, who nodded past Burki to make it 1-1.

Aubameyang remained central to the breathless early action as he again found space in the area, only to be denied by a desperate Gulacsi block.

And the match took another dramatic twist when Portugal winger Bruma brilliantly raced around his marker on the left and held his composure to find Poulsen for a tap-in.

There was still time left in the half for Dortmund to go close to an equaliser, with Gulacsi once more smothering a close-range opportunity for Aubameyang.

The visitors' stunning fightback continued immediately after the restart with Sokratis dismissed for dragging down Augustin, who sent Burki the wrong way from the resultant penalty.

Their numerical advantage lasted less than 10 minutes, though, as Ilsanker picked up two bookings in as many minutes to give the hosts hope.

Dortmund's comeback truly came to life just after the hour when VAR was used to award a contentious penalty for a trip by Dayot Upamecano on Aubameyang, the Gabon international making no mistake with his spot-kick.

But that was to prove their last moment of joy as Gulacsi decisively denied Aubameyang in stoppage time and Andriy Yarmolenko sent the rebound over a gaping target.