Franck Ribery celebrates scoring the opening goal for Bayern Munich against Mainz 05 on Saturday. Photo: Michael Probst/AP

BERLIN – Franck Ribery netted a rare Bundesliga goal as Bayern Munich eased to an eighth consecutive league victory with a 2-0 win over Mainz on Saturday.

After a sluggish first half-hour, the veteran Frenchman put Bayern ahead on 33 minutes.

Picking up a poorly cleared corner at the edge of the box, he released a fizzing half-volley to score only his second league goal of the season.

James Rodriguez then doubled the lead just before halftime, elegantly bringing the ball down on his chest before volleying it past Robin Zentner.

“We were exhausted at the end,” Bayern centre-back Mats Hummels told Sky Sport. “Mainz passed the ball well, but we deserved to win.”

The win saw Bayern extend their lead at the top of the table to 18 points after second-placed Bayer Leverkusen were held to a 0-0 draw in Freiburg.

Lucas Alario hit the post for Leverkusen early in the game, but there were more yellow cards than chances, as seven players were booked and Freiburg once again frustrated a top team.

“It was a heated game,” Leverkusen’s Julian Brandt told Sky. “We knew in advance that it wouldn’t be easy to come to Freiburg.”

Leverkusen, though, remain in second after Schalke once again dropped points. Both teams profited from goalkeeping errors in Gelsenkirchen, as a late goal saw Werder Bremen snatch a surprise 2-1 victory.

A catastrophic mistake from Jiri Pavlenka gifted Schalke the lead on 24 minutes. Yevhen Konoplyanka’s speculative effort flew straight at the Bremen goalkeeper, who allowed the ball to slip through his fingers.

“These things happen, it just looks stupid because he is the last man,” said striker Max Kruse in Pavlenka’s defence. “We all made mistakes on the pitch today.”

With 11 minutes to go there was more farcical goalkeeping as Ralf Faehrmann allowed Kruse to equalise for Bremen.

After Matija Nastasic was sent off for a second bookable offence, Faehrmann fumbled the resulting free-kick, allowing the ball to bounce out of his hands and into the path of Kruse.

It would get worse for Schalke in stoppage time, as Zlatko Junuzovic stabbed a loose ball past Faehrmann to claim a dramatic and invaluable victory for relegation-threatened Bremen.

Elsewhere in the lower half of the table, Mario Gomez scored against his former club to rescue a point for VfB Stuttgart, as they welcomed new coach Tayfun Korkut with a 1-1 draw in Wolfsburg.

Liverpool loanee Divock Origi put Wolfsburg in front on 24 minutes, curling a long-range shot into the bottom corner.

Gomez, who left Wolfsburg for Stuttgart in January, levelled the scores on the hour mark, prodding the ball home from close range.

In Saturday’s other game, Hoffenheim extended their winless run to five matches after throwing away a 1-0 lead to draw at Hertha Berlin.

Andrej Kramaric gave Hoffenheim the lead from the penalty spot on 39 minutes, but Salomon Kalou’s header drew the home side level just before the hour mark.

On Friday, Michy Batshuayi scored twice on his debut for Borussia Dortmund after joining on loan from Chelsea as his new club won 3-2 at bottom side Cologne.