Borussia Dortmund were able to keep their lead against a dogged Schalke side that fought till the last.

The roar echoing out from the Signal Iduna Park set the atmosphere for the 87th Revierderby, a match which promised a brilliant spectacle regardless of the result. Dortmund were without the services of Marco Reus, but still more than a match for the visitors.

Fans had been promised a fast-paced game, and neither team disappointed. End-to-end football was the order of the day; Matthias Ginter in particular seemed determined to continuously fire the ball into the Schalke box, but his efforts were safely cleared by a solid back line.

Tensions were high on both sides, with several enthusiastic tackles in the opening minutes requiring the attention of the referee, though none were deemed worthy of a card. Neither side was willing to give an inch, and despite constant pressure there were no clear cut chances in the opening 20 minutes.

Two quick goals midway through the half

Dortmund were unfazed by the resistance, and were finally able to open the scoring half an hour into the match. A good one-two between Ginter and Gonzalo Castro gave Ginter the space he needed to send a cross in towards Shinji Kagawa. The Japan international was able to get his head to the ball, nudging it past Ralf Fährmann and giving Dortmund the lead.

The roar echoing around the stadium was short-lived, however, as Schalke wasted no time in grabbing their equaliser courtesy of Klaas-Jan Huntelaar. Youngster Leroy Sane broke free down the left of the pitch, drawing Roman Bürki off of his line before perfectly teeing up Huntelaar for the finish. The veteran Dutchman kept his cool and tapped the ball into the back of the net, tying up the game at 1-1.

Dortmund edge ahead before the break

There was still more to come from Dortmund in the first half – a blistering 40-yard shot from İlkay Gündoğan looked destined for the top corner but curled inches wide of the post, much to the relief of Fährmann. 

It was a corner that put the home side back in front, and again it was Ginter in the middle of the action, rising up to meet the ball with his head and knocking it through the outstretched arms of Fahrmann and into the net for his second of the season and Dortmund's second of the match.  At the half time whistle the hosts had the lead, but there was no doubt plenty more to come from both sides.

Aubameyang makes it three

The game restarted at a blistering pace, with Dortmund bearing down on the visitors and grabbing their third goal of the game in the opening minutes of the half. It seems no Dortmund game is complete without a goal from Pierre-Emerick Aubameyang these days, and the the striker made sure to keep with tradition, collecting a pass from Gonzalo Castro and placing it perfectly in the bottom left corner of Fahrmann's goal, taking him to the top of the scoring charts with his fourteenth league goal of the season.

The pace of the game was noticeably more relaxed from Dortmund, their two-goal lead giving them a chance to catch their breath. Schalke took advantage of the lull and were able to put the pressure on. The swing in momentum was all the invitation the visitors needed, as a sliced clearance from Sokratis landed at the feet of Huntelaar. A simple turn and a chip over the keeper was no trouble for the striker, and all of a sudden Dortmund's lead looked a lot less secure.

Despite good attacking play from Schalke in the remainder of the match, they were unable to get the break they needed to level the score. Tempers flared on the pitch, but unfortunately the visitors were able to translate their passion into a third goal, leaving Dortmund to hold on for the win after a thrilling ninety minutes.