Jefferson Farfan put the Royal Blues in front against the champions in the ninth minute, but Lukasz Piszczek levelled for Dortmund eight minutes later.

Sebastian Kehl sealed the visitors' win in the 63rd minute as they opened up a provisional nine-point advantage at the summit with three games remaining, and second-placed Bayern failed to cut the deficit back to six points in the evening kick-off as they were unable to break down Mainz.

Playing with a weakened side ahead of their midweek Champions League semi-final first leg against Real Madrid, Bayern looked out of sorts after their midweek defeat to Dortmund and could find no way past a defensive-minded Mainz.

Elsewhere, Bayer Leverkusen and Hertha Berlin shared the spoils in a dramatic 3-3 draw at the BayArena, although the point hardly helped either side in their respective battles for Europe and to avoid relegation.

Berlin managed to turn around a two-goal deficit in a thrilling second half which also saw a missed penalty and a red card for Berlin's Levan Kobiashvili.

Andre Schurrle put Leverkusen in front just before the break and they seemed to be cruising to victory when Stefan Kiessling added a second in the 51st minute.

Pierre Lasogga reduced the arrears after an hour before Thomas Kraft saved Simon Rolfes' penalty after Kobiashvili saw red for a foul inside the area.

Two goals from Tunay Torun turned the game on its head with Berlin leading 3-2 until Kiessling snatched a point for Leverkusen in the 84th minute.

Nurnberg sent Kaiserslautern a step closer to relegation and gave themselves a comfortable cushion over the bottom three with a 2-0 victory at the Betzenberg, Daniel Didavi and Tomas Pekhart the men on target.

Hamburg moved five points clear of the drop zone and seven away from automatic relegation thanks to a 1-0 win over Hannover, a 12th-minute goal from Heung Min-son proving the difference.

A late goal from Sebastian Langkamp earned Augsburg a precious 2-1 away win in Wolfsburg to take them four points clear of the drop zone.

Langkamp struck in the 88th minute after Patrick Helmes had equalised Torsten Oehrl's early opener for the Bavarians.