Substitute Xherdan Shaqiri's first Bundesliga goal for Bayern Munich rescued a 1-1 home draw for the runaway leaders after Borussia Moenchengladbach had taken a surprise first-half lead.

Bayern Munich's Xerdan Shaqiri celebrates after scoring a goal during their German Bundesliga first division match against Borussia Monchengladbach in Munich

Bayern enjoyed almost total dominance but were shaken when Thorben Marx converted a harshly-awarded penalty for Gladbach midway through the first half.

Marx went from hero to villain when his misplaced pass fell to Shaqiri, who joined from Basel at the start of the season, and the 21-year-old Kosovo-born Swiss international fired the equaliser in the 59th minute.

"We dictated the game and they hardly had a scoring chance," Bayern coach Jupp Heynckes said.

"(Gladbach keeper Marc-Andre) Ter Stegen was the best player on the pitch. He was outstanding."

Shaqiri, who had already scored in the Champions League and German Cup, went on in the first half following an injury to Spanish midfielder and record German signing Javi Martinez.

It was a rare hiccup for the Bavarians who failed to win for only the fourth time in the league this season.

Bayern reached the halfway point of the campaign and the mid-season break with an impressive 42 points from 17 games, 44 goals scored and just seven conceded.

They are 12 points clear of Bayer Leverkusen, who host mercurial Hamburg SV on Saturday. Champions Borussia Dortmund, a further three points behind in third spot, visit Hoffenheim on Sunday.

Referee Tobias Welz held his nerve and turned down several Bayern penalty appeals throughout the match despite furious protests from the players and crowd on each occasion.

Sixth-placed Gladbach survived an early battering and went ahead when Tolga Cigerci's cross hit Jerome Boateng's elbow from close range as the defender turned away and Marx confidently steered the penalty low into the right corner.

Bastian Schweinsteiger's free kick was headed off the line by Juan Arango with Ter Stegen beaten and Brazilian Dante's header scraped the crossbar in the next attack as Bayern hit back.

There was no let up for Gladbach after the break either.

Ter Stegen made an outstanding save at full stretch to stop Schweinsteiger's low shot from finding the bottom corner.

Dante also went close with a header and Franck Ribery was foiled by a borderline offside decision as he was poised to put the finishing touch to a counter attack.

Bayern levelled when Marx lost possession on the edge of the area and Shaqiri won the ball, slipped past his marker and fired a low shot between Ter Stegen and the near post.

Ter Stegen made another save to deny a dipping 30-metre effort by Toni Kroos while Mario Gomez produced the loudest penalty appeal with a triple somersault in the area.

Television replays suggested a defender made slight contact and that Gomez's theatrical fall was an exaggeration.

"I had too much to do but we fought hard and worked hard," said Ter Stegen.