First-half strikes from Tete and Manor Solomon either side of a Raphael Varane own goal gave the Ukrainian side a commanding lead, before Real pulled two back early in the second period through Luka Modric and Vinicius Junior.
Despite a sustained period of pressure late on from the Spanish champion, including a last-minute goal rightly disallowed by VAR for offside, Shakhtar held on for a famous win.
To make the result even more incredible, Shakhtar was without seven starting players — and 10 in total — due to a combination of positive coronavirus cases and injuries.
The defeat caps a miserable few days for Real, which suffered another shock defeat at the weekend to newly promoted Cadiz. Coach Zinedine Zidane, who cut a helpless and bemused figure on the sidelines, has plenty of work to do ahead of El Clasico against bitter rival Barcelona on Saturday.
A night to remember
There were certainly several warning signs early on for Real, which started the match looking sluggish and lazy. Those in white were second to every loose ball and Shakhtar’s young, inexperienced team looked to have an extra spring in its step.
Real began its domestic campaign in impressive form, winning three and drawing one of its opening four matches and looked to have picked up where it left off at the end of last season.
However, at the weekend the team looked lackluster against Cadiz, playing in its first top-flight Spanish campaign for 15 years, and was convincingly outplayed. Many wondered whether it was just a small blip or an insight into some early issues Zidane would be facing this season.
Wednesday’s match would certainly have done nothing to allay those concerns.
Shakhtar’s bright start was soon rewarded, with the visitor taking deserved lead just before the half hour mark and Real’s early defensive frailties were brutally exposed.
Following a slick passing move out from defense, Viktor Korniienko was allowed the slalom into the box relatively unopposed and lay the ball off to Tete, who kept his composure and stroked the ball into the bottom corner.
With one eye on this coming weekend’s La Liga clash against Barcelona, Real made several changes to its regular starting lineup, but there could be no excuses for this insipid, lifeless first-half performance.
Things would only go from bad to worse and less than four minutes later, Shakhtar had doubled its lead. Tete was again at the heart of the attack and his shot was this time saved by Real goalkeeper Thibault Courtois, only for Raphael Varane to poke the ball into his own net as he tried to make an awkward clearance.
Due to its 81,000 capacity Santiago Bernabeu undergoing renovations, Real Madrid has been playing all of its matches since the enforced coronavirus break at its Alfredo Di Stefano training center and most of these players had certainly approached this tie with all the intensity of a training match.
Then, just minutes before half time, Shakhtar looked to have put the game beyond Real as Solomon latched onto Tete’s brilliant back heel and slotted to ball calmly into the bottom corner.
By this point, even Zidane could only muster a bewildered smirk, but there would be few smiles in that Real changing room at half time.
Whatever the coach said to his players during the interval clearly had the desired effect, as two goals from Modric and Vinicius in the space of five minutes early in the second half gave Real hope of salvaging at least a point.
Unsurprisingly, it was Real that dominated the majority of the second period but Shakhtar still presented a consistent threat on the counterattack and Tete had a glorious opportunity to put the game to bed, only to see his shot saved by Courtois.
In the game’s dying seconds, Real thought it had snatched an equalizer as Federico Valverde deflected shot squirmed past Shakhtar goalkeeper Anatolii Trubin.
However, after a brief VAR review, referee Srdjan Jovanovic ruled the goal out for offside with Vinicius stood in an offside position and obscuring Trubin’s view.
The final whistle blew just moments later, sparking wild scenes as the Shakhtar bench emptied and stormed the pitch in celebration.
Defending champion impresses
Elsewhere, defending champion Bayern Munich laid down an early marker with an eye-catching 4-0 win at home to Atletico Madrid.
Many had this down as the most intriguing tie of the first round of fixtures, with both of these teams among the favorites to reach the latter stages of this season’s competition.
Certainly, most would have expected a closer game than this and, worryingly for Bayern’s rivals, the Bavarian club was nowhere near its best. Atletico Madrid had plenty of chances, in particular in the first half, but was wasteful when in front of goal.
Kingsley Coman, the hero in last season’s Champions League final, was at the heart of Bayern’s victory, scoring two goals and assisting another for Leon Goretzka.
Corentin Tolisso put the game beyond doubt just after the hour mark with a thunderous drive from distance after the ball had ricocheted back out to him.
Coman’s second — Bayern’s fourth — was a stunning solo effort, the French winger twisted and turned through Atletico’s porous defense and slotted the ball past Jan Oblak into the far corner.
Only one team in Champions League history, Zidane’s Real Madrid, has previously won back-to-back titles, but Bayern has a realistic chance of doing the same this season.