Belgium need a win to qualify for round of 16, while Canada are already out of the race.
Hakim Ziyech opened the scoring for Morocco, pouncing on goalkeeping mistake to put Morocco ahead against Canada early in the first half. Morocco doubled their lead against Canada, thanks to a strike from Youssef En Nesyri.
Canada them pulled one back through an own goal to make it 1-2. Croatia, meanwhile, were denied a penalty after VAR intervention. A player was marginally found offside in the build-up for the penalty call.