The North Africans thought they had taken the lead in first-half injury time, only for the VAR to rule out Hakim Ziyech's free kick for offside against Romain Saiss. But second-half strikes from Abdelhamid Sabiri and Zakaria Aboukhlal made sure the points would go to Morocco.
Belgium now face the possibility of an early exit, while Morocco need only a point to make the round of 16.
1. It's time for Belgium to worry
Just like four days ago, this match was going so badly for Belgium that at half-time, boss Roberto Martinez had to change something. Against Canada, it was some players; against Morocco, it was the tactical system. The Red Devils abandoned their wonky 3-4-2-1, with a hybrid back 3 or 4, for a more logical 4-2-3-1 with Eden Hazard moving from the left to the centre.
The first half was very poor with not enough movement or ball progression in midfield. Yet, despite a slight improvement (a shot from Hazard not long after the break and another one from Dries Mertens with 25 minutes to go), it again wasn't good enough.
Martinez made further changes after an hour with Youri Tielemans and Mertens on for Amadou Onana and Hazard. The Hazard one is understandable because once more the captain was underwhelming, but the Onana substitution was harder to comprehend. Kevin De Bruyne moved central, but he didn't have much more of an impact there either. This is not his World Cup so far.
- Scenarios: Permutations for all eight groups
More worryingly, this has not been Belgium's World Cup, and there is a very real case for concern. This team doesn't offer much and it can't just be because of Romelu Lukaku's absence. And when the usual saviour, goalkeeper Thibaut Courtois, makes a mistake to cost you a goal, you know it's not your day. On Friday, De Bruyne joked that Belgium could not win the World Cup because they were too old. He was wrong. If they don't win the World Cup it will be because they have not been good enough, not because of their age. They were lucky to beat Canada (1-0), and they can still qualify by beating Croatia on Thursday. But right now, you would not put your house on it.
2. Morocco fans are incredible and got their reward
The Morocco anthem was something else. One of the best renditions so far in this tournament, all teams combined. The Al Thumama Stadium was just full of Morocco fans; loud, passionate and so eager to see their team do well that they would roar as soon as one of their players approached the box.
All game long, they created an incredible atmosphere, especially after the Sabiri and the Aboukhal goals which made the stadium explode twice, especially the second time!
Morocco's players fed off that incredible energy and support to play with their hearts. The problem is that they don't have much else. Despite the talent of Achraf Hakimi and Ziyech, their 4-3-3 is limited in terms of cohesion from midfield. They still rely too much on the Chelsea winger's deliveries and creativity. He did it with a ball for Hakimi just before the break, and on the goal disallowed for offside against Saiss, and the wonderful switch for Sofiane Boufal whose shot went just wide.
Ziyech can't do it all on his own and it was Sabiri who took over to score the opening goal. Their amazing fans probably deserve better football, but for now they will be happy with this famous win, one of the greatest in the country's history and which puts them in a great position to qualify for the round of 16 with a victory against Canada.
3. Batshuayi is not up to the task
Lukaku's absence through injury has been a huge blow for Belgium and for Martinez. This team is clearly much more effective with him in it. He is almost ready to start after training with the squad for three days, but he spent 30 minutes warming up and came on for only the last 10 minutes. But the biggest problem is that while he was out, his replacement was Michy Batshuayi. The Fenerbahce striker scored the winning goal against Canada, but he just doesn't offer enough when his team has the ball.
Batshuayi is only trying to run in behind and even that he doesn't do well enough. On Sunday, we hardly saw him. He had an early chance that he missed and he made a mess of a decent ball into the box after the hour mark, but overall his performance was poor. He doesn't get involved in the buildup play, doesn't show for the ball and the Morocco centre-backs found it really easy to nullify the threat. The return of Lukaku is great news for Belgium, but it might come too late.
Belgium: Courtois 3, Alderweireld 4, Vertonghen 4, Castagne 4, Meunier 4, Onana 4, Witsel 3, T. Hazard 4, De Bruyne 4, E. Hazard 4, Batshuayi 3
Subs: Lukaku 4, Mertens 4, Tielemans 4, De Ketelaere 4, Trossard 4
Morocco: Munir 6, Hakimi 6, Aguerd 7, Saiss 6, Mazraoui 6, Ounahi 5, Amrabat 6, Amallah 5, Ziyech 7, En-Nesyri 5, Boufal 6
Subs: Attiyat-Allah 5, Sabiri 6, El-Yamiq 5, Hamdallah 5, Aboukhal 6
Best and worst performers
BEST: Hakim Ziyech
What a performance! Not everything was perfect of course -- it's never the case with him -- but he kept trying, kept provoking with the ball and his wonderful left foot, kept looking for a way of impacting the game. He thought he scored before VAR intervened and he was rewarded with a great assist for the second goal.
WORST: Thibaut Courtois
He was the hero after saving a penalty against Canada. This time, he cost his team at least a point against Morocco. His terrible mistake on Sabiri's goal, which went through him, sent the North Africans towards victory. He was saved by the VAR before the break on a similar situation, too. Not a good day at all.
Highlights and notable moments
Morocco 🇲🇦 stun World Number 2 Belgium 🇧🇪 2-0 in a historic victory for the Atlas Lions. MASSIVE!— Usher Komugisha (@UsherKomugisha) November 27, 2022
This is Morocco's first win since the 1998 World Cup and the second victory for an African team in Qatar. pic.twitter.com/ssQXYgFyvY
After the match: What the players and managers said
Amadou Onana: "We were in control of the game until they scored. We had a lot of possession, especially in the first half. The only thing missing was the goals. Lukaku's return is a big plus for us now. We need to beat Croatia, that's all we are focused on right now."
Selim Amallah: "We are so proud. It was a very emotional win today with this incredible atmosphere. This win is for all the Moroccans around the world. We have a united team, we give everything all the time. We won't get carried away, though. We still have one more game to qualify but we are in a great position."
Key stats (provided by ESPN Stats & Information)
This was Morocco's first win at the World Cup since beating Scotland in the 1998 group stage.
It was Belgium's first loss against an African team at the World Cup, having won three and drawn one before this game.
The first goal was the first direct free-kick that Courtois has conceded in a competitive match with Belgium since 2013 vs Serbia (Aleksandar Kolarov); Sabiri's free-kick was Morocco's first in their World Cup history.
Belgium: Martinez must pick his team up to take on Croatia in the final group game on Thursday, but he knows that a victory will definitely send his team through.
Morocco: It's Canada on Thursday, and they only need a point to secure a place in the round of 16.