Bayern Munich failed to put pressure on RB Leipzig in the Bundesliga title race as they laboured to a 1-1 draw with Schalke at the Allianz Arena.
Carlo Ancelotti's side came into the contest looking for a win to open up a six-point gap ahead of Leipzig, a few hours before the Bundesliga surprise package host Borussia Dortmund.
Robert Lewandowski scored in the ninth minute on the end of a neat move, but it was generally as good as it got for Bayern on a scrappy outing.
Naldo's thunderbolt free-kick levelled the scores soon after and Schalke were a constant menace on the counter-attack.
Philipp Lahm came on for his 500th Bayern appearance late on, but his introduction from the bench - despite carrying a knee injury - was a sign of Ancelotti's growing desperation late in the game.
Though Schalke remain without a win in 13 games against Bayern, avoiding four defeats away from home for the first time in 17 years will boost the confidence of a side that remain in the bottom half of the table amid an inconsistent season under Markus Weinzierl.
Bayern were rewarded for a probing start when Lewandowski chipped over Ralf Fahrmann after Arturo Vidal's throughball bisected the Schalke defence.
But the visitors' search for an equaliser was brief, Naldo slamming a 25-yard free-kick around the wall and beyond a grasping Manuel Neuer.
Schalke gave as good as they got, Sead Kolasinac smashing straight at Neuer before Juan Bernat did likewise at the other end.
Weinzierl's side were creating the better chances, Leon Goretzka slashed wide after touching past Rafinha smartly and the young midfielder saw another chance go begging as he delayed a shot one-on-one, allowing Bernat to recover and make a crucial tackle.
Guido Burgstaller hit the bar from Kolasinac's cut-back as Schalke stayed on top, but Lewandowski kept them on warning just before the break, also hitting the woodwork after shifting into space in the six-yard box.
Daniel Caligiuri was correctly denied a goal on his first Schalke start after touching home Nabil Bentaleb's shot as the visitors continued to threaten on the break and the Allianz Arena rose to salute Holger Badstuber just before the hour - the on-loan Bayern defender substituted on his Schalke debut.
Ancelotti was not pressed into changes until the 71st minute when Douglas Costa replaced Arjen Robben, and the sense of need was heightened when senior full-backs Lahm and Alaba replaced Rafinha and Bernat.
As well as Lahm, Xabi Alonso was another milestone man on his 100th Bayern appearance and he lashed over to prompt a late wave of chances for the hosts.
The best chance came for Javi Martinez, picked out by Alaba in the right channel, but the Spaniard dragged his shot wide to end Bayern's seven-game winning run and give Leipzig - four points off the pace - a sniff of top spot again.