Uruguay reached the semi-finals of the World Cup for the first time since 1970, but ended the hopes of Africa after winning a truly extraordinary match at Soccer City on a penalty shoot-out.

Ghana seemed certain to become the first African side to reach the last four of the competition when Luis Suarez saw red after handling on the line in the dying seconds of extra-time.

However, striker Asamoah Gyan, who had already converted two penalties in South Africa, skimmed the crossbar with the last kick of the game.

Gyan showed incredible guts to take the first spot-kick of the shoot-out but John Mensah and Dominic Adiyiah both had their low strikes saved by Fernando Muslera.

And Sebsatian Abreu then showed ice-cold composure to dink the decisive penalty beyond Richard Kingson as Uruguay sealed a semi-final tie against the Netherlands.

Suarez's deliberate handball, which came seconds after he had legitimately blocked one goal-bound effort with his knee, was a gamble that paid handsome dividends.

It was a truly remarkable final few minutes, surely some of the most dramatic in World Cup history, and came at the end of an engrossing and occasionally bad-tempered contest.

Both teams enjoyed periods in the ascendancy - and both were guilty of wasting numerous opportunities.

Sulley Muntari, almost kicked out of the squad after criticising coach Milovan Rajevac earlier in the competition, struck a long-range opener on the stroke of half-time, while the impressive Diego Forlan equalised with a free-kick 10 minutes after the restart.

La Celeste controlled the early part of the contest and their early endeavours twice brought them close to scoring but each time they were denied by Kingson.

The first was a reaction save after John Mensah inadvertently deflected a corner towards his own goal and the second an athletic finger-tip effort to deny Suarez, who will be suspended for the semi-final, after the striker capitalised on a slip by Isaac Vorsah.

But the South American side, already without injured defender Diego Godin, lost skipper Diego Lugano to injury towards the end of the first half, his withdrawal coming at a time when the Black Stars had started to find a foothold in the match.

Rajevac's side had offered almost nothing in attack until Vorsah, recalled in defence in place of the suspended Jonathan Mensah, headed wide from a corner just before the half-hour mark.

Gyan then narrowly missed after the industrious Kevin-Prince Boateng picked him out in front of the deep-sitting Uruguay defence with a square ball, while Mutari headed wide after latching on to a raking pass.

Even so, it looked as though the match would be goalless at the break until Muntari, gifted the time to assess his options, unleashed a vicious 40-yard strike that caught Muslera off guard.

Uruguay brought on Nicolas Lodeiro at the break and the game quickly became stretched as Tabarez's team searched for an equaliser.

Edinson Cavani felt he should have been awarded a penalty after he went down under a challenge from Vorsah, but there was no doubt about Forlan's free-kick from a wide angle that drew his team level.

Ghana had repeated opportunities to strike on the counter, but they wasted a series of excellent positions with poor pass selection, while Gyan tangled repeatedly with several different members of the Uruguay defence.

Uruguay created two good chances for Suarez but he could only guide a cross from Forlan into the side-netting at the far post and drill in a strike that Kingson palmed over.

Andres Scotti blocked a shot from Gyan in the first half of extra-time and, minutes before the shoot-out, almost kicked the ball into his own net as he tried to clear it away from the dangerous Ghana striker.

The Black Stars were dominant in the closing minutes of extra-time as their opponents visibly tired and, after Suarez legally denied Steven Appiah and then Adiyiah - illegally - the match took its dramatic final twist.