Real Madrid's Champions League progress is in peril after Shakhtar Donetsk earned a shock 2-0 win over Zinedine Zidane's stuttering side.
Bruno Dentinho finished off a counter-attack in the 57th minute, pouncing as Raphael Varane dithered, and then Manor Solomon was allowed to drive from halfway before striking a late second (82) as the Ukrainians completed a stunning double over the European heavyweights.
Shakhtar, who beat Real Madrid 3-2 on matchday one, climb above the Spaniards into second in the Group B table courtesy of their head-to-head record, meaning the fate of the 13-time European Cup winners is out of their hands.
Real Madrid - who have won just four of their last 11 games in all competitions - face leaders Borussia Monchengladbach in the final group game on December 9 but must hope Shakhtar slip up against Inter on the same night.
Zidane's side - without Eden Hazard and Sergio Ramos but boosted by the return of Karim Benzema - went close to an early breakthrough as Marco Asensio hit the post from a tight angle.
Asensio was also denied by Shakhtar goalkeeper Anatolii Trubin, who did well to push another strike over the bar.
But Shakhtar were energised after the break and Thibaut Courtois, who had little to do in the first half, was called into action to deny Taison.
That proved to be a warning sign as the hosts broke the deadlock just before the hour mark when Dentinho - on for the injured Junior Moraes - capitalised on a defensive mix-up and slotted into the bottom corner.
Another counter-attack saw Shakhtar double their lead eight minutes from time as Solomon raced down the left flank before cutting in and drilling beyond Courtois to leave Real's hopes in the balance.
'From bad to worse' - but Zidane won't resign
Zidane insisted he wouldn't resign as Real Madrid manager, but the Spanish press didn't hold back in their assessment of the situation on Wednesday morning.
Spanish publication Sport described the defeat in Kiev as "Disastrous" and the situation as a "Total crisis".
Marca's headline read: "Wow, how you've changed", while Mundo Deportivo's read "From Bad to Worse".
Madrid's run of qualifying from the group stage for a record 23 consecutive seasons is in serious danger but Zidane vowed he - and his side - would fight on.
Zidane said after the loss: "I feel strong and I am going to keep giving everything as always. I am not going to resign. This is a difficult moment but we have to show our pride and our character.
"I'm optimistic. This is a difficult moment but we need to show our character now and stand tall," he said at his post-match press conference.
"What happened is a real shame because we did not deserve it but we have to win our next game. We're going to believe in ourselves and we're going to fight, you can be sure about that."
Permutations - fate still in Real's hands
Group B as it stands
|3. Real Madrid||5||7|
|4. Inter Milan||5||5|
December 9 fixtures: Real Madrid vs Borussia Monchengladbach (8pm), Inter Milan vs Shakhtar Donetsk (8pm)
For Real Madrid, the situation is simple. If they beat Borussia Monchengladbach in Madrid on Wednesday, they will secure safe passage, while a draw is also enough if Inter win at home to Shakhtar.
Monchengladbach will be through if they avoid defeat against Real, and if they lost, they can also go through if Inter-Shakhtar is a draw.
Shakhtar are through if they beat Inter, and a draw is also enough if Real don't beat Monchengladbach. But Shakhtar cannot progress with a defeat.
Inter must beat Shakhtar and hope there is a winner in the Monchengladbach-Real game. If the Monchengladbach-Real game is a draw, Inter will miss out due to their head-to-head record with Real.
Follow the final day from Group B on the Sky Sports App and skysports.com on Wednesday December 9.