Kevin Kuranyi scored twice as Schalke beat Bayer Leverkusen 2-0 to move past Bayern Munich to the top of the Bundesliga on Saturday and get on course for its first championship in 52 years.
Earlier, Stuttgart sent Bayern Munich to its second straight Bundesliga loss -- and first home defeat in 11 months -- with a come-from-behind 2-1 win.
Kuranyi's strikes brought his total to a league-high 17 goals, with both goals coming off passes from Jefferson Farfan.
Schalke now has a two-point lead over Bayern with six matches remaining -- and can all but clinch the championship if its beats Bayern next week at home.
"If we beat them next week, we have a good chance of winning the title, but we won't be home dry," said Schalke's coach Felix Magath, who won the title with Wolfsburg last season.
Schalke now has 58 points, two more than Bayern and five ahead of Bayer Leverkusen shirt.
"It hurts a lot," Bayern coach Louis van Gaal said of his team's defeat.
Leverkusen went a record 24 games undefeated but has lost three of its last four. It sorely missed injured top striker Stefan Kiessling, who has 16 goals.
Kuranyi pulled even when he picked up Farfan's pass and curled the ball inside the left post and then pulled ahead with a header in the 27th.
"We got well into the game and the early goals helped." Magath said. "It was a big win after a strong performance."
Leverkusen's coach Jupp Heynckes said Schalke had a good chance of winning the title.
"They were superior in all aspects, especially in the first half," Heynckes said.
After taking the early two-goal lead, Schalke rarely allowed Leverkusen to get close. With 22 goals allowed, Schalke has the stingiest defence.
In other games, Werder Bremen beat Nuremberg 4-2, Cologne won 4-1 in Hannover, Wolfsburg was a 2-0 winner in Mainz and Borussia Dortmund drew 0-0 at Hertha Berlin.
In Munich, Ivica Olic put Bayern ahead but Christian Traesch and Ciprian Marica scored for Stuttgart to hand Bayern its first loss in 17 home games. Bayern's afternoon got worse when Dutch international Arjen Robben pulled up with a left-calf injury, an injury that could prove costly ahead of Tuesday's Champions League quarter-final against Manchester United.
Van Gaal started with Robben and France playmaker Franck Ribery on the bench after Wednesday's extra-time 1-0 win over Schalke in their German Cup semifinal. Both came on after the break but neither made much of an impact.
Stuttgart started brightly against the Bundesliga leaders, Sami Khedira forcing goalkeeper Joerg Butt into a save in the 24th minute. At the other end, Daniel van Buyten came close for Bayern.
Olic opened the scoring for Bayern in the 32nd, connecting with a low cross from Croatia teammate Danijel Pranjic to bury the ball into the roof of the net.
But Stuttgart was uncowed and Traesch equalized in the 41st when his shot from 20 metres was deflected past Butt and into the net.
Stuttgart kept pressing. Timo Gebhart tested Butt, who barely managed to turn away his shot, before Marica scored the winner in the 50th.
Bayern's defence failed to clear a corner and Cacau floated a cross to the far post, where the unmarked Marica nodded the ball home.
Bayern should have tied it when Miroslav Klose's header off a cross from Philipp Lahm hit Stuttgart goalkeeper Jens Lehmann, but was also fortunate when Zdravko Kuzmanovic narrowly missed the target in the 78th after shaking off Bayern defender Diego Contento.
"Stuttgart is a good team and it created chances," van Gaal said. "We conceded an unlucky goal on a deflected shot and we were unlucky in front of Stuttgart's goal."
Bayern faces a series of decisive games, with another trip to Schalke on April 3, the return leg at Manchester United, and a visit to third-place Leverkusen in the Bundesliga.
Lehmann, the Stuttgart goalkeeper, said Bayern, which lost 2-1 at Eintracht Frankfurt last week, could be feeling the burden of playing in three competitions.
"We have only one game a week and maybe we were the fresher team," said Lehmann, whose team won in Munich for the first time since September 1999.
"It was time to win here again," Stuttgart's coach Christian Gross said.