Soufiane Rahimi and Mohammed Ali Bemammer scored within eight minutes of the kickoff to set up African Nations Championship title-holders Morocco for a 3-1 quarter-final triumph over Zambia Sunday.
The plight of the Zambians in Cameroon worsened when Zachariah Chilongoshi was red-carded for a studs-up tackle and they fell three goals behind before half-time when Ayoub el Kaabi converted a penalty.
However, if the Moroccans thought they could go on a scoring spree during the second half in port city Douala they were mistaken as Zambia showed fighting spirit that was absent earlier.
They not only prevented the defending champions scoring in the second half, but pulled one goal back with 10 minutes remaining through substitute Moses Phiri.
By winning, Morocco became the first title-holders in a competition reserved for home-based players to reach the semi-finals of the following edition.
They will face Cameroon in Limbe Wednesday in a potential blockbuster being labelled “the final before the final” by the local media.
Cameroon, who will be appearing in the penultimate stage for the first time, came from behind Saturday to win 2-1 against two-time champions the Democratic Republic of Congo.
While the Cameroonians will enjoy home advantage, the Moroccans have improved considerably after a sluggish start in which they edged Togo and were held by Rwanda.
Having scored just once, from a penalty, in two outings, they netted eight times against Uganda and Zambia with Rahimi bagging three and captain El Kaabi two.
The other semi-final, also on Wednesday, will be a west African affair between Mali and Guinea, with both reaching that stage for the second time.
Several hours after Morocco advanced, Guinea defeated Rwanda 1-0 in Limbe thanks to a goal direct from a free-kick by Morlaye Sylla on 60 minutes.
Both sides finished a mainly scrappy quarter-final match with 10 men after Guinean Mory Kante and Rwandan Olivier Kwizera were sent off.
Both offenders were initially yellow-carded before the referee changed his mind after using VAR.
Kante was dismissed for a knee-high tackle on Jacques Tuyisenge after 14 minutes, which forced the Rwanda captain to come off, and Kwizera was expelled for a last-defender foul 42 minutes later.
On Saturday, Mali pipped Congo Brazzaville 5-4 on penalties after a 0-0 draw.