Senegal held firm in the face of a furious second-half assault from Uruguay to clinch their place in the last 16 in an incredible match which saw 12 players booked.
Uruguay will consider themselves hard done by as Senegal sprinted into a 3-0 lead in Suwon with the aid of a controversial penalty, and an equally contentious third goal.
The result sees Senegal go through in second place, after Denmark beat France 2-0 to win Group A.
Uruguay Coach Victor Pua's half-time substitutions paid dividends as Richard Morales and Diego Forlan reduced Senegal's lead.
Alvaro Recoba equalised with another controversial penalty two minutes from the end.
And in injury time, Morales missed a glorious chance which would have seen Uruguay win 4-3 and snatch a qualifying place.
One goal could have made
the difference and we should have had it at the end
Uruguay striker Diego Forlan
Senegal spectacularly relieved the early pressure they had been under by taking the lead on 19 minutes - although it was a goal shrouded in controversy.
El Hadji Diouf tumbled as he attempted to round Uruguay goalkeeper Fabian Carini, although there appeared to be little or no contact between the two.
Referee Wegereef awarded a penalty but failed to show Carini a red card, and Khalilou Fadiga completed Uruguay's punishment by slotting home the spot-kick.
There was nothing controversial about Sengegal's second as they stretched their lead on 26 minutes.
El Hadji Diouf tumbles under Carini's challenge
Senegal swept out of defence and Camara squared the ball into the path of Pape Bouba Diop who finished emphatically to add to his winning goal against France.
But it did little good as Uruguay fell 3-0 behind to another controversial goal on 38 minutes.
Pape Bouba Diop appeared at least a yard offside as he volleyed in a cross via the underside of the bar, leaving Uruguay's defenders waiting incredulously for a flag that never came.
Uruguay were given a ray of hope when one of desperate coach Pua's half-time substitutions scored within 20 seconds of the restart.
Dario Silva's shot was blocked and Morales followed up to tap in.
It was the signal for Uruguay to lay siege to Senegal's goal and the South Americans closed the gap even further on 69 minutes, through a spectacular volley from Forlan.
Senegal were hanging on by their fingernails and Forlan ran clear only to roll his shot inches wide of the target.
Two minutes from time Recoba equallised from the penalty spot but in injury time Morales somehow headed wide from two yards out with the goal at his mercy.
Senegal: Tony Sylva, Ferdinand Coly (Habib Beye 63), Pape Malik Diop, Lamine
Diatta, Omar Daf, Alassane Ndour (Amdy Faye 76), Aliou Cisse (capt), Pape Bouba
Diop, Khalilou Fadiga, Henri Camara (Moussa N'Diaye 67), El-Hadji Diouf.
Subs not used:Souleymane Camara, Kalidou Cissokho, Oumar Diallo, Makhtar N'Diaye, Sylvain N'Diaye, Pape Sarr, Pape Thiaw, Amara Traore.
Booked: Henri Camara, Daf, Coly, Pape Bouba Diop, Diouf, Fadiga, Beye.
Goals: Fadiga 20 pen, Papa Bouba Diop 26, 38.
Uruguay: Fabian Carini, Alejandro Lembo, Gonzalo Sorondo (Mario Regueiro 32), Paolo
Montero (capt), Marcelo Romero (Diego Forlan 45), Pablo Garcia, Gustavo Varela, Dario
Rodriguez, Alvaro Recoba, Dario Silva, Sebastian Abreu (Richard Morales 45).
Subs not used: Joe Bizera, Gonzalo de los Santos, Federico Elduayen, Gianni Guigou, Federico Magallanes, Gustavo Mendez, Gustavo Munua, Fabian O'Neill, Nicolas Olivera.
Booked: Carini, Garcia, Rodriguez, Montero.
Goals: Morales 47, Forlan 69, Recoba 89 pen.
Referee: Jan Wegereef (Holland).
MATCH STATS |
| Senegal | Uruguay |
Corners (1st half) | 2 | 4 |
Corners (2nd half) | 3 | 3 |
Fouls committed | 19 | 16 |
Caught offside | 5 | 4 |
Shots on target | 5 | 7 |
Shots off target | 2 | 8 |
Hit woodwork (back into play) | 0 | 0 |
Yellow cards | 7 | 4 |
Red cards | 0 | 0 |
STOPPAGE TIME | |
First half - 2 mins | Second half - 4 mins |