Substitute Emmanuel Mayuka scored 12 minutes from time to seal Zambia a shock 1-0 win over four-time champions Ghana and a place in the Africa Cup of Nations 2012 final.
The goal came against the run of play with Isaac Chansa setting up the 20-year-old striker, whose shot from outside the penalty area flew past goalkeeper Adam Kwarasey into the corner of the net.
Zambia will now go to Libreville for an emotional showdown with Côte d’Ivoire or Mali on Sunday. It will be the third final appearance by the Copper Bullets after losing to Zaire after a replay in 1974 and to Nigeria 20 years later with a team built in just 12 months.
Midfielder Derek Boateng was sent off seven minutes from time after a second booking to leave Ghana battling on with ten men in a tense finish as Zambia clung to the slender advantage.
Ghana made three changes from the team that edged Tunisia in a bruising last-eight match three days ago with Lee Addy, Derek Boateng and Jordan Ayew replacing Alhassan Masawudu, injured Emmanuel Agyemang-Badu and Sulley Muntari.
Addy was one of only two outfield players in the 23-man squad who had taken no part in the previous four matches, while Boateng made his first start and Ayew his second.
After making only one change in their previous four outings, Zambia coach Herve Renard dropped Chisamba Lungu and Mayuka from the side that convincingly defeated Sudan and brought in Francis Kasonde and James Chamanga.
Ghana had won two and Zambia one of three CAF Africa Cup of Nations matches between the two countries, with their last meeting 16 years ago in Johannesburg seeing the Copper Bullets score the lone goal in a third place play-off.
The Black Stars were favourites this time, however, and the early exchanges backed that view with the four-time champions squandering a great chance to take an early lead when Asamoah Gyan failed to convert a penalty. Awarded for a foul on Kwadwo Asamoah by Davies Nkausu, Gyan did not strike the spot-kick with great power and Kennedy Mweene guessed correctly, diving to his left to push the ball away.
Gyan, whose three goals were instrumental in Ghana reaching the 2010 final, was not at his sharpest and shot timidly at Mweene soon after when put through by Andre Ayew. Jordan Ayew, younger brother of Andre and son of Ghana legendy Abedi 'Pele' Ayew, was another culprit when he broke free inside the box but failed to connect with a delicate chip over the defence.
With the Black Stars doing most of the pressing, scoring chances for the Copper Bullets were few and far between although captain Christopher Katongo should have done better than blaze wide when set up by Rainford Kalaba.
Renard had a change of mind at half-time regarding his lone striker and introduced Mayuka for Chamanga, hoping the young Switzerland-based star could add to his two goals tallied early in the tournament.
However, the goalmouth action continued to be largely at the end guarded by Mweene, who had to get down smartly when Jordan Ayew unleashed a low, close-range shot. Ghana looked more likely to break the deadlock as the second half wore on and they suffered a blow when injury-prone captain John Mensah was forced to retire with Isaac Vorsah coming on.
Mayuka proved his side's match-winner, though, with time ticking down in the game when he turned and perfectly placed his shot beyond a diving Adam Larsen against the run of play. Ghana then had Boateng sent off for a second caution with six minutes to go as they crashed out at the semi-final stage for the third consecutive tournament.