The Bundesliga champions extended their lead at the top of the table to four points over RB Leipzig, who take on Borussia Dortmund later on Saturday, but will rue not securing a precious win nevertheless.
Robert Lewandowski had put the hosts ahead after good work by Arjen Robben freed Arturo Vidal to make the decisive pass to the striker, who dinked home with ease.
But Naldo equalised for Schalke just minutes later with a trademark fizzing strike past Manuel Neuer, with Bayern unable to break down the visitors' wall from then on.
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 Carlo 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 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.