Michael Ngadeu-Ngadjui and Christian Bassagog scored for Cameroon to set up a final showdown with Egypt on Sunday
Ghana’s goalkeeper, Razak Brimah, was principally at fault for the opening goal, coming for a free-kick but failing to collect as defender John Boye instead managed to cushion a header straight into the path of Ngadeu-Ngadjui, who smashed the ball into an empty net.
And Bassogog’s clincher ensured Hugo Broos’ team will bid for their country’s fifth title – and first since 2002 – on Sunday.
After a quiet start in which Cameroon pressed most, Ghana had gradually become more dominant but could not cash in their efforts.
Only Harrison Afful’s goal-line clearance stopped Cameroon taking the lead in the eighth minute with Adolphe Teikeu’s header from a corner, and Razak came to the rescue soon afterwards to keep out Robert Ndip Tambe’s left-foot shot on the turn.
New Swansea signing Jordan Ayew had the first clear-cut chance for Avram Grant’s men in the 40th minute, but his shot across goal from Christian Atsu’s through-ball went the wrong side of the far post.
Fabrice Ondoa had precious little to do in the Cameroon goal until early in the second half, when he had to be alert and brave to beat André Ayew to a low cross from his brother Jordan. Then just after the hour, Ondoa did even better to palm away Mubarak Wakaso’s fiercely-struck left-foot free-kick.
André Ayew wanted too many touches inside the six-yard box from a corner – and then in the 75th minute, his right-foot shot went wide.
In between, Razak’s costly flap made Ghana chase the game and they were picked off by Bassogog in added time.