Match ends, Shakhtar Donetsk 2, Real Madrid 0.
Real Madrid manager Zinedine Zidane said he is "not going to resign" after defeat by Shakhtar Donetsk left his side's hopes of reaching the Champions League last 16 in the balance.
The 13-time European champions are third in Group B, with all four sides still able to qualify in next week's final round of matches.
Real must beat leaders Borussia Monchengladbach to guarantee progress.
"I am not going to resign, not at all," said Zidane following the 2-0 loss.
"We are always going to have difficult moments, and we are on a bad run, but we need to keep going," added the Frenchman, whose side suffered a shock 2-1 defeat by Alaves in La Liga on Saturday.
"I have the strength needed to turn the situation around and I am going to give everything to do that. So are the players.
"We played well and we deserved more. We just need to lift our heads up and think about the next game."
It was Real's second defeat by Shakhtar in this season's competition, the Ukrainian side winning the reverse fixture 3-2 in Madrid.
Romelu Lukaku scored twice as Inter Milan beat Monchengladbach 3-2 later on Tuesday to keep their hopes of qualification alive.
The Spanish champions, currently fourth in La Liga, were without injured pair Eden Hazard and captain Sergio Ramos but welcomed back talisman Karim Benzema for their return to the stadium where they were last crowned European champions in 2018.
Real started well as Marco Asensio hit the post after five minutes and Benzema drew goalkeeper Anatoliy Trubin into action.
Trubin then tipped over from Asensio's powerful shot before half-time and again denied Benzema, before Dentinho and Manor Solomon struck in the second half for Shakhtar.
Dentinho pounced on Raphael Varane's error after 57 minutes and, rather than retreat, Shakhtar were rewarded for pursuing a second eight minutes from time when Solomon found the bottom corner.
Shakhtar had not scored in three group games since their opening victory over Real and conceded a total of 10 goals in heavy back-to-back defeats by Monchengladbach.
But their superior head-to-head record over Real means Shakhtar occupy second place in the group, one point behind Monchengladbach heading into a dramatic final round.
An early exit for Real?
Zidane's side have struggled for consistency this season and the lacklustre defeat by Alaves extended their winless domestic run to three matches.
Real endured a nightmare start to their European campaign as they followed up their humiliating defeat by a second-string Shakhtar side with a 2-2 draw away to Monchengladbach, courtesy of a dramatic late fightback.
Consecutive wins against Inter Milan looked to have rescued the La Liga side, but another famous victory for Luis Castro's side has blown qualification for the knockout stages wide open.
Four victories in their past 11 games in all competitions represents a concerning run of form for Zidane's men, who sit seven points adrift of leaders Real Sociedad in Spain, albeit with a game in hand.
They now face the prospect of an unthinkable early exit from Europe's elite club competition heading into their final group match against Monchengladbach next Wednesday.
But crucially, following Monchengladbach's defeat by Inter, Zidane's side are in control of their destiny as they eye a last 16 place for a record-extending 24th consecutive season.
Super-sub Solomon - the stats
- With two defeats, Real Madrid have lost as many group games in the Champions League this season as they did under Zinedine Zidane over the 2016-17, 2017-18 and 2019-20 campaigns combined, when they lost two of 18.
- Shakhtar Donetsk have won just two of their past nine matches in the Champions League, both victories coming against Real Madrid.
- Three of Manor Solomon's four Champions League goals have come as a substitute, with two arriving against Real Madrid this season.
- Since the start of last season, Raphael Varane has made four errors leading to a goal in the Champions League, more than any other player.
- Karim Benzema made his 124th appearance in the Champions League, the joint-10th most in the competition's history.
- 2Cordeiro Dos Santos
- 49da Silva Matos
- 11MarlosSubstituted forde Andrade Barberanat 73'minutes
- 20KovalenkoSubstituted forLourencoat 85'minutes
- 14Cardoso Lemos Martins
- 10Júnior MoraesSubstituted forDentinhoat 25'minutesSubstituted forDos Santos Pedroat 85'minutes
- 7TaisonSubstituted forSolomonat 74'minutes
- 8Marcos Antônio
- 27de Andrade Barberan
- 28Robson Cipriano
- 99Dos Santos Pedro
- 5VaraneBooked at 14mins
- 25RodrygoSubstituted forVinícius Júniorat 77'minutes
- 21ØdegaardSubstituted forIscoat 77'minutes
- 9BenzemaSubstituted forMarianoat 77'minutes
- 20Vinícius Júnior
- 30Arribas Calvo
- Ovidiu Hategan
- Shots on Target
Second Half ends, Shakhtar Donetsk 2, Real Madrid 0.
Offside, Real Madrid. Luka Modric tries a through ball, but Nacho is caught offside.
Corner, Real Madrid. Conceded by Tetê.
Attempt blocked. Vinícius Júnior (Real Madrid) right footed shot from the right side of the box is blocked. Assisted by Lucas Vázquez.
Vinícius Júnior (Real Madrid) wins a free kick on the left wing.
Foul by Maycon (Shakhtar Donetsk).
Foul by Isco (Real Madrid).
Tetê (Shakhtar Donetsk) wins a free kick on the right wing.
Foul by Lucas Vázquez (Real Madrid).
Manor Solomon (Shakhtar Donetsk) wins a free kick in the defensive half.
Substitution, Shakhtar Donetsk. Alan Patrick replaces Viktor Kovalenko.
Substitution, Shakhtar Donetsk. Fernando replaces Dentinho because of an injury.
Goal! Shakhtar Donetsk 2, Real Madrid 0. Manor Solomon (Shakhtar Donetsk) right footed shot from the centre of the box to the bottom left corner. Assisted by Maycon following a fast break.
Foul by Isco (Real Madrid).
Taras Stepanenko (Shakhtar Donetsk) wins a free kick in the defensive half.
Corner, Real Madrid. Conceded by Dodô.
Attempt blocked. Marco Asensio (Real Madrid) left footed shot from outside the box is blocked. Assisted by Vinícius Júnior.
Attempt blocked. Luka Modric (Real Madrid) right footed shot from outside the box is blocked.
Substitution, Real Madrid. Vinícius Júnior replaces Rodrygo.
- Anton Ferdinand: Football, Racism and Me: How the John Terry incident drove him to tackle the problem in the game
- Rugby League's Great British Lions: Follow a behind the scenes look at their return tour down under