Marocko inledde bäst men kom aldrig till några heta målchanser. Strax före paus fick man in en boll när Hakim Ziyech skruvade dit en frispark men efter en VAR-granskning dömdes målet bort för offside.
I den andra halvleken skruvades tempot upp men 0–0 stod sig, fram till den 74:e matchminuten.
För då klev Abdelhamid Sabiri fram.
Han drog, precis som Hakim Ziyech, till en frispark från en snäv vinkel. Thibaut Courtois hann inte ner och 1–0 var ett faktum.
Belgien, som tog en knapp seger senast mot Kanada (1–0), bytte in Romelu Lukaku i slutskedet och forcerade för ett kvitteringsmål. Men Marocko höll undan och kunde istället kontra in 2–0, vilket även blev slutresultatet.
– Vi kan fortfarande bli bättre. Jag är inte nöjd med fyra poäng, jag vill ha avancemang, säger Marockos förbundskapten Walid Regragui.
Efter två matcher toppar Marocko grupp F på fyra poäng. Belgien har tre.
– Vi spelar utan glädje. Det beror kanske på pressen på våra axlar. I sista matchen måste vi spela som att vi inte har något att förlora, säger Belgiens Roberto Martinez.