Tournament favourites Germany were dumped out on penalties after they were held to a 1-1 draw with Mali after extra-time.
Julian Brandt’s volleyed opener appeared to put Germany on course but the game changed when Hany Mukhtak’s second-half penalty was saved by Mali keeper and captain Djigui Diarra.
Mali equalised through Souleymane Coulibaly’s diving header and were later let off the hook when Mukhtar missed an easy chance, resulting in the need for spot-kicks.
Both sides scored their first three penalties, before Mali’s Adama Traore had his penalty saved and Brandt blasted his shot over.
Mali then made it 4-3 and claimed victory when Niklas Stark missed for Germany,
Coach Faneri Diarra dedicated the win to the supporting public in Mali, adding his side never doubted they had a giant-killing performance in them.
“With young kids in this tournament, there are always surprises,” he said. “Our confidence has been rising throughout the event and our results have risen too.”
Mali will meet either the United States or Serbia on Wednesday.
Senegal’s passage to the semi-finals was less dramatic, securing their spot with a 1-0 win over Uzbekistan.
Mamadou Thiam scored in the 76th minute to give first-time qualifiers Senegal a meeting in the last-four with five-time champion Brazil on Wednesday.
Senegal had never won a match in the final qualifying stage for an under-20 tournament until this year.
After being denied for much of Sunday’s match by Uzbekistan goalkeeper Dilshod Khamraev, Thiam combined with Remi Nassalan for the winning goal.
“It was a very tough match as I was expecting,” Senegal coach Joseph Koto said. “I can tell you one thing (Sengal’s capital city) Dakar isn’t sleeping right now.
“At first everyone expected us to get smashed, 5-0, 6-0, 7-0 at every match we played but the team actually progressed through the rounds and now everyone watches the matches.”