Bayern Munich's hopes of finishing top of their Champions League group were hanging by a thread on Wednesday after they were stunned 3-2 at Russian side Rostov who recorded their first ever win in the competition.
The German champions had already qualified for the last 16, but their chances of topping Group D are now slim with leaders Atletico Madrid needing a point from their final two games to tie up first place.
Atletico took the top spot after beating Eindohoven 2-0 in the other group match.
Rostov, who are merely battling to finish third and get into the Europa League, fell behind when Douglas Costa swept home after 35 minutes, but an excellent finish from livewire forward Sardar Azmoun levelled and Dmitri Poloz's penalty put the hosts ahead.
Bayern, whose defence was frequently exposed by Rostov's pace on the break, equalised when Juan Bernat drove the ball into the roof of the net, but Christian Noboa curled in a precise free kick to earn Rostov a famous victory.
The Russian side moved up to four points, provisionally three clear of bottom club PSV Eindhoven, who visit Atletico later on Wednesday.
Bayern, who were beaten by Borussia Dortmund in the Bundesliga on Saturday and are winless in their last three in all competitions, stay on nine points, ahead of their final group outing against Atletico.
Bayern, five times European champions and Bundesliga winners for the last four seasons, beat Rostov 5-0 in September in what was the Russian side's first ever match in the Champions League.
Yet this was always going to be a tougher test for the Germans, especially without injured goalkeeper Manuel Neuer and playmaker Arjen Robben.
The visitors enjoyed the better start, but should have fallen behind after nine minutes when Alexander Erokhin's header was cleared off the line.
A mistake from Rostov defender Cesar Navas 10 minutes before halftime, gifted Bayern the lead as his poor clearance fell to Costa who rifled the ball home from close range.
Rostov improved as the half progressed and drew level a minute before the break when Iranian Azmoun, a constant threat with his pace and trickery, left Jerome Boateng on the ground with a sharp turn and calmly finished into the bottom right corner.
Five minutes after halftime, Poloz put Rostov in front from the penalty spot after Noboa was fouled by Boateng, who had a match to forget and was substituted after 58 minutes.
The hosts' advantage did not last long, however, as Bernat latched onto Franck Ribery's excellent ball into the box and drove home with his first touch.
There was to be no salvation for Bayern though as Rostov re-took the lead on 67 minutes when Noboa curled a wonderfully taken free kick over the wall into the corner.