Match ends, Real Madrid 2, Shakhtar Donetsk 3.
Real Madrid boss Zinedine Zidane took responsibility for "a bad night" as the 13-time European Cup winners were handed a humiliating defeat by a second-string Shakhtar Donetsk side.
The Ukrainian champions arrived in Madrid without 13 first-team players after 19 positive Covid-19 tests throughout the club left them needing to call up youth-team players.
But Luis Castro's young side were undaunted and swept into an amazing, but thoroughly warranted, 3-0 lead at Real's empty Alfredo di Stefano training ground.
Goals from Luka Modric and Vinicius Junior after the break gave Real hope, but there was no escape for the competition's most decorated side despite a dramatic finale.
Federico Valverde thought he had hit a stoppage-time leveller but after a check at the pitchside monitor referee Srdjan Jovanovic disallowed the goal for offside.
The defeat follows a shock 1-0 home defeat newly-promoted Cadiz in La Liga on Saturday.
"I did not see the team as I wanted and when you do not see the team as you wanted it is your fault," Zidane said.
"It's a bad game, a bad night. I'm the coach and it's up to me to find the solution.
"We deserve the criticism, all of us, and me first. Luckily we had a reaction in the second half because they don't deserve that, they are champions and it bothers me.
"I am responsible and I have to look for solutions because that cannot happen."
Club legend Zidane won the Champions League in each of his first three seasons in charge of Real, but his decision to rest players with next Saturday's El Clasico against Barcelona in mind was a rare, and huge, aberration.
Without captain Sergio Ramos - left in the stands with a knee injury - Real's defence was a mess and could do little to prevent Mateus Tete and Manor Solomon scoring either side of a Raphael Varane own goal.
Tellingly, Real have now lost seven of their last eight Champions League games without Ramos at the heart of their backline.
Former Tottenham midfielder Modric hit a stunning long-range strike to bring a ray of hope and, although Vinicius scored within 15 seconds of coming, on Shakhtar held on for a famous result.
"We have a match every three days. But hey, there is no excuse," Zidane said.
"These are decisions that I have made and I have to find what will lead us to become strong again and win. And I have few days."
'We're experiencing a nightmare'
Castro was asked in his pre-match news conference whether the game should have been called off thanks to their depletion, with the former Porto boss admitting "at the moment we're experiencing a nightmare."
Instead it was a first-half dream for his fearless team which contained eight players under the age of 23. Captain Marlos had already wasted a glorious chance to put Donetsk ahead when Tete did drive past Thibaut Courtois after some woeful defending from Varane and Marcelo.
Varane then toed into his own net after Courtois failed to hold a Tete shot, and Solomon swept in a fine third after some slick one-touch play had carved Real apart.
Real sent on the rested Karim Benzema at the break and got a foothold in the game when Modric scored a wonderful goal, arrowing a 25-yarder into the top corner.
The comeback was well and truly on when Vinicius scored with his first touch, sweeping in after a defensive lapse.
Shakhtar were camped in defence but had chances to seal it on the counter, Tete twice wasting good chances and Marlos seeing a fourth ruled out for offside.
There was more offside drama to come. Valverde's shot from a short corner beat 19-year-old goalkeeper Anatolii Trubin, but Vinicius was offside, right in his eyeline and the goal was chalked off.
After a summer which saw no incoming transfers, Zidane now has work on his hands to qualify from a group which also contains Inter and Borussia Monchengladbach.
He can make more history though - as no side has won the Champions League after losing their opening game.
First time this century - the stats
- Real have lost three consecutive matches in the European Cup/Champions League for the first time since September 1986.
- Shakhtar are the first Ukrainian side to win against Real in the Champions League since March 1999, when Dynamo Kiev won 2-0 - before either of Shakhtar's two scorers tonight were born (Manor Solomon in July 1999 and Tete in February 2000).
- Raphael Varane became the third player to score two own goals in the Champions League for Real, along with Ivan Helguera and Sergio Ramos.
- Vinicius Junior scored for Real just 15 seconds after coming on as a substitute - this is the fastest substitute goal in the Champions League since 2006-07 (when Opta has collected this data).
- Luka Modric became only the fourth player to score for Real in the European Cup/Champions League at the age of 35 or older, after Alfredo Di Stefano, Ferenc Puskas and Paco Gento.
- Shakhtar goalkeeper Anatolii Trubin became the second youngest goalkeeper to start against Real in Champions League history (19 years 81 days), behind only Schalke's Timon Wellenreuther in February 2015 (19y 77d).
- 3MilitãoBooked at 87mins
- 10ModricSubstituted forKroosat 70'minutes
- 11AsensioBooked at 34mins
- 18JovicSubstituted forVinícius Júniorat 59'minutes
- 25RodrygoSubstituted forBenzemaat 45'minutes
- 20Vinícius Júnior
- 2Cordeiro Dos Santos
- 77BondarBooked at 83mins
- 15KorniienkoBooked at 8mins
- 27de Andrade Barberan
- 14Cardoso Lemos Martins
- 8Marcos AntônioSubstituted forV'Yunnikat 90+4'minutes
- 19SolomonSubstituted forda Silva Matosat 90+2'minutes
- 9DentinhoSubstituted forSudakovat 86'minutes
- 28Robson Cipriano
- 49da Silva Matos
- Srdjan Jovanovic
- Shots on Target
Second Half ends, Real Madrid 2, Shakhtar Donetsk 3.
Casemiro (Real Madrid) wins a free kick in the defensive half.
Foul by Bogdan V'Yunnik (Shakhtar Donetsk).
Substitution, Shakhtar Donetsk. Bogdan V'Yunnik replaces Marcos Antônio.
VAR Decision: No Goal Real Madrid 2-3 Shakhtar Donetsk.
GOAL OVERTURNED BY VAR: Federico Valverde (Real Madrid) scores but the goal is ruled out after a VAR review.
Offside, Real Madrid. Federico Valverde tries a through ball, but Vinícius Júnior is caught offside.
Substitution, Shakhtar Donetsk. Vitão replaces Manor Solomon because of an injury.
Corner, Real Madrid. Conceded by Manor Solomon.
Corner, Real Madrid. Conceded by Viktor Korniienko.
Eder Militão (Real Madrid) is shown the yellow card for a bad foul.
Foul by Eder Militão (Real Madrid).
Tetê (Shakhtar Donetsk) wins a free kick in the defensive half.
Substitution, Shakhtar Donetsk. Heorhii Sudakov replaces Dentinho because of an injury.
Corner, Real Madrid. Conceded by Davit Khocholava.
Valerii Bondar (Shakhtar Donetsk) is shown the yellow card.
Foul by Toni Kroos (Real Madrid).
Dodô (Shakhtar Donetsk) wins a free kick in the defensive half.
Offside, Shakhtar Donetsk. Marcos Antônio tries a through ball, but Tetê is caught offside.