Striker Mahamadou Samassa opened the scoring with a header in the 21st minute, captain Seydou Keita added to the lead with a close-range shot in the 48th, and Sigamary Diarra sealed the victory in stoppage time, ending Mali's emotional campaign.
Kwadwo Asamoah scored for Ghana in the 82nd. Ghana striker Wakaso Mubarak missed a penalty kick early in the second half.
Samassa scored with a diving header from near the penalty spot after a breakaway on the left side, and former Barcelona player Keita netted his third goal of the tournament with an easy shot from close range after a cross from the right.
Keita scored again in the 72nd but the goal was called off because of offsides.
Ghana pulled one closer near the end with a long-range left-footed shot that curled to fool Mali goalkeeper Soumaila Diakite, who was his team's hero in the penalty shootout against host South Africa in the quarterfinals.
Diarra closed the scoring in the third minute of stoppage time, firing a left-footed shot into the far corner after beating Ghana defenders to a long ball inside the area.
Ghana had a chance to get on the board early in the second half after the referee called a hand ball inside the Mali box, but Mubarak sent his shot from the spot way over the crossbar. The Espanyol striker entered the match as one of the tournament's leading scorers with four goals along with Nigeria's Emmanuel Emenike, who will play in Sunday's final if he recovers from an injury.