Bayer Leverkusen came from behind to beat runner up Bayern Munich 3-1 and Eintracht Frankfurt held front-runners Borussia Dortmund to a 1-1 draw at the 20th round in Bundesliga on Saturday.

Bayer Leverkusen assumed control on home soil whereas Bayern Munich needed some time to gain a foothold into the game. Leverkusen came to their first chance as Kevin Volland unleashed a dangerous volley shot on target with 10 minutes into the game.

The visitors showed their first vital sign with 25 minutes played when Leon Goretzka missed the opener from promising position. However, the German international cut a better figure just before the break when he opened the scoring by header following a pinpoint cross from Thomas Mueller in the 41st minute.

After the restart, Leverkusen grabbed a better start into the clash once again and their efforts got rewarded in the 53rd minute as Leon Bailey curled a free kick from 28 meters into the top left corner to restore parity.

The "Werkself" gained momentum and turned the tides ten minutes later after Kevin Volland finished off Karim Bellarabi's build-up work from central position.

Bayern tried to bounce back but James Rodriguez header got blocked and Robert Lewandowski missed the target from close range. Leverkusen put the result beyond doubt following a fast break as Julian Brandt's square pass allowed substitute Lucas Alario to make it 3-1 on the scoreboards in the 89th minute.

With the result, Bayern Munich suffered a set back in the title race after slipping from the 2nd to the 3rd place meanwhile Leverkusen jumped on the 7th position of the standings.

However, leaders Borussia Dortmund were unable to fully capitalize on Bayern's defeat, as Eintracht Frankfurt held the "BVB" to a 1-1 draw. Frankfurt took the reins from the start and should have broken the deadlock with three minutes played but Danny da Costa was unable to beat Dortmund goalkeeper Roman Buerki in a one-on-one.

As the match progressed Dortmund were able to the take away the heat from their goal as Jadon Sancho and Lukasz Piszczek tested Frankfurt's defense.

The "BVB" eventually broke the deadlock with 22 minutes into the encounter as Raphael Guerreiro shrugged off two defenders to set up for Marco Reus, who made no mistake to tap in from very close range.

Reus remained in the thick of things as he should have added more goals to Dortmund's lead but the German international missed three golden chances within five minutes.

Hence, the "Eagles" punished Dortmund for their wastefulness as Danny da Costa's cross into the box found Luka Jovic, who poked home artistically into the top left corner in the 36th minute.

After the halftime, Dortmund remained on the front foot but neither Paco Alcacer nor Axel Witsel was able to grab the winner for the visitors. Ante Rebic had the best chance for the hosts at the other end of the pitch but Dortmund goalkeeper Roman Buerki was on guard to deny with a diving save.

With the draw, leaders Dortmund have a seven-point advantage but yet they squandered the chance to move nine points clear atop the standings whereas Eintracht Frankfurt continue on the 5th place.

Elsewhere, Wolfsburg recovered from two straight defeats after beating Hertha Berlin on Wout Weghorst's sole goal. Newly promoted Fortuna Dusseldorf shared the spoils with Hoffenheim following a 1-1 draw.

Mikael Ishak's late 1-1 equalizer helped bottom side Nuremberg to secure one point against Werder Bremen and Borussia Monchengladbach captured the second place in the standings after overpowering ten-men Schalke 2-0.

The following fixtures conclude the 20th round on Sunday: Augsburg host Mainz and struggling Stuttgart face Freiburg.