Rank outsiders Burkina Faso will face Nigeria in the Africa Cup of Nations final after a 3-2 penalty shootout win over Ghana on Wednesday.
Ghana's Udinese midfielder Emmanuel Agyeman Badu had his effort saved by Daouda Diakite after earlier misses by teammates Isaac Vorsah and Emmanuel Clottey.
Bakary Kone, Henri Traore and Aristide Bance converted their chances to continue the fairy-tale run of a team that had turned up in South Africa with the modest ambition of ending a 17-match winless Nations Cup run.
Now they find themselves meeting Nigeria, 4-1 winners over Mali earlier, for a shot at becoming kings of Africa.
The spot-kick climax was called for after the two teams were inseparable at 1-1 in a thrilling semi-final, with Bance's second-half goal cancelling out Mubarak Wakaso's early penalty.
The Burkinabe were deserved winners after almost coming unstuck by a series of strange decisions against them by Tunisian referee Slim Jdidi.
Chief among them was a legitimate penalty claim turned down, and a goal disallowed.
Jdidi wrongly waved away claims for an early spot-kick when John Boye barged into Jonathan Pitroipa, knocking his Rennes teammate unceremoniously to the much maligned Mbombela Stadium turf.
But on 13 minutes the referee had no hesitation in giving Ghana a penalty after an innocuous tangle involving Mady Panandetiguiri and Christian Atsu.
Wakaso stepped up to convert past Daouda Diakite, for his fourth goal of the competition.
The penalty dramas sandwiched an unscripted substitution for Ghana, with Solomon Asante coming on for John Paintsil, stretchered off with a right thigh injury.
Bance in his step
Burkina were giving as good as they got in attack, but would have to find a way to trouble Ghana keeper Fatawu Dauda in the second half if they were to make it to Soweto on Sunday.
Burkina Faso's athletic striker Bance was looking dangerous every time he got the ball.
On 52 minutes Dauda produced a superb save off the Augsburg attacker's header when he grabbed the ball from underneath the crossbar, Jdidi on this occasion getting it absolutely right, much to the Burkinabe fans' displeasure.
Down at the other end, Gyan hit Diakite's woodwork.
On the hour, Burkina got the equaliser their endeavour deserved, Bance, coolly firing past Dauda.
Burkina's Dynamo Bucharest defender Paul Koulibaly was fortunate to escape with just a yellow after lashing out with his boot at a delicate part of Gyan's body.
Diakite kept Ghana at bay with a diving save to deny Atsu's attempt to send the game into extra time, which was only minutes old when he tipped over a shot from Harrison Afful.
Bance had his yellow spaghetti-mop hair in his hands on 102 minutes when clear on goal only to shoot high.
Jdidi made another strange decision against Burkina Faso when disallowing Prejuce Nakoulma's goal after a minor clash with Kwadwo Asamoah.
Pitroipa was harshly sent off on 117 minutes for picking up his second booking of the night, for diving, after he had, in fact, been felled. He misses Sunday's final.
Dauda produced a series of fine saves to keep Ghana in business, but with the crowd almost to a man on their side, Burkina held their nerve to book an improbable date at Soweto's Soccer City