Kevin De Bruyne, winning his 96th cap, played the full 90 minutes and took over the captain’s armband late in the game, but the City playmaker was unable to put his stamp on a game the Moroccans fully deserved to win.
Roberto Martinez’s men will watch the Croatia v Canada contest later today with great interest, with the complexion of Group D taking on a completely different dynamic following this result.
Belgium never really managed to build up a head of steam and looked to have gone behind on the stroke of half-time as Chelsea winger Hakim Zyech’s curled a cross towards a crowded six-yard box beat Thibaut Courtois to send the Moroccan fans wild.
But a lengthy VAR inquest and touchline review by the referee confirmed a marginal offside and the goal was ruled out.
The Red Devils were again second best after the break, as the energetic and impressive Morocco defended well and attacked with threat.
And on 73 minutes, the African side’s endeavours were rewarded when Abdelhamid Sabiri beat Courtois at his near post to score the opening goal.
It had been coming.
De Bruyne tried to spark his team-mates into life in the time that remained, and though Romelu Lukaku appeared as late sub, neither he or KDB could find a way through a disciplined Moroccan back-line.
GET YOUR MANCHESTER DERBY TICKETS
And, in the third minute of added time, the excellent Ziyech drove into the Belgium box before finding Zakaria Aboukhlal who swept a shot high into the roof of the net from eight yards and end the game as a contest.
It was no more than Morocco deserved and it means Martinez’s misfiring side are likely to need to beat Croatia in their final group game to progress into the knockout stages.