|Happier times: Sulley Muntari had given Ghana a first-half lead [GALLO/GETTY]
Asamoah Gyan missed the chance to send Ghana through as the first African team to reach a World Cup semi-final when he blasted a penalty against the bar with seconds remaining in extra time.
With the score at 1-1 with Uruguay, the game then went to a penalty shootout - which the Black Stars lost 4-2 to leave their players inconsolable on the pitch.
Uruguay substitute Sebastian Abreu got the decisive penalty with a cheeky chip over goalkeeper Richard Kingson to set up a semi-final with Netherlands, who shocked Brazil 2-1.
The teams could not be separated after extra-time in a thrilling contest after Gyan hit the bar with a penalty in the second minute of added time that was given when Uruguay striker Luis Suarez deliberately handled on the line and was sent off.
Ghana had taken the lead with a speculative strike by Sulley Muntari just before the end of the first half of normal time but that was cancelled out by a masterful Diego Forlan freekick 10 minutes after the interval that brought the sides level in Johannesburg.
Ghana were bidding to become the first African side to reach the semi-finals while twice World Cup winners Uruguay were trying to reach the last four for the first time in 40 years.
In a game of wildly changing fortunes, Uruguay had dominated the opening stages as they worked hard to set strikers Forlan and Suarez free.
Ghana, despite enormous support from their fellow Africans packing the stadium, surrendered the ball too easily to a hard-tackling Uruguay midfield.
It appeared to be going Uruguay's way as they created the chances with Forlan blasting the ball over the bar and then minutes later Suarez's shot was tipped over by Kingson.
Ghana suddenly woke up, though, and won their first corner from which central defender Isaac Vorsah should have opened the scoring but only managed to head wide.
Minutes later striker Gyan was sent through only to shoot wide.
Uruguay's defence, which had only let in one goal on the way to the quarter-finals, suffered a blow when captain Diego Lugano had to limp off and was replaced by Andres Scotti.
Then in added time at the end of the first half, Muntari struck a spectacular long-range drive to put Ghana ahead.
Ten minutes into the second half, Uruguay won a freekick just outside the area on the left and Forlan struck the ball perfectly, bending it over everyone's heads and beyond the despairing reach of Kingson for the equaliser.
Uruguay coach Oscar Tabarez sent on striker Sebastian Abreu after 76 minutes in search of a winner but neither side could break the deadlock and the match went into extra time.
The first chance of the extra period fell to midfielder Kwadwo Asamoah but he blasted over the bar from outside the box when he had space to compose himself.
Minutes later Gyan was blocked when he tried to go through by himself.
Uruguay appealed for a penalty when Abreu went down in the area while trying to latch onto a cross but Portuguese referee Olegario Benquerenca showed no interest.
Ghana midfielder Kevin-Prince Boateng headed just wide two minutes from the end of extra time and went close again with a fierce drive from 25 metres which was saved.
The African side piled on the pressure and were awarded a penalty when Suarez handled on the line to keep out a header by Ghana substitute Dominic Adiyiah and was shown a red card.
But Gyan missed the chance to win the game when his spot kick rattled the bar and the match went to a penalty shootout, with Jonathan Mensah and Adiyiah missing their kicks.