Holders Morocco will meet Mali in the final at the Ahmadou Ahidjo Stadium in Yaounde, Cameroon on Sunday 7, February.
Raja Casablanca striker Soufiane Rahimi was the two-goal hero for Morocco who produced one of their best displays of the tournament to beat hosts Cameroon 4-0 on Wednesday to keep alive their hopes of retaining the title.
Mohammed Ali Bemammer and Soufiane Bouftini wrapped up the emphatic victory for the Atlas Lions past the Indomitable Lions.
The North Africans secured the title on home soil in 2018 when beating Nigeria 4-0 in the final.
Earlier in the day, goalkeeper Djigui Diarra and striker Mamadou Coulibaly were the penalty heroes as Mali beat Guinea after the first semi-final ended goalless after an evenly-balanced 120 minutes at Douala’s Japoma Stadium.
Diarra saved Guinea play-maker Morlaye Sylla’s penalty while Coulibaly maintained his calm to send Tsekouba Camara the wrong way on the winning penalty to secure a place into the final.
Mali will be in the CHAN final for a second time, and looking to improve on their 3-0 defeat to DR Congo in 2016.
Guinea will play hosts Cameroon in the third-place playoff at the Reunification Stadium in Douala on Saturday.