Brazil will meet Argentina in the final on Sunday after they beat Japan 1-0.
It was a spirited and superb performance and bodes well for the future. Amajita were buzzing early on and were the better side for the first half, but still went into the break 2-1 down.
The South Africans played some breathtaking football, especially in the opening 15 minutes, surprising Brazil with their pace and skill.
But against the run of play the South Americans took a 27th-minute lead when Misael Bueno fired in a low shot at the near post after a quick counter down the right.
South Africa, however, were back in the game on 30 minutes with a deserved equaliser when Thabani Mthembu received the ball on the edge of the box, beating a defender and lashing a 16-yard shot into goal.
However, a moment of madness in defence five minutes before the break gifted Brazil back the lead.
After goalkeeper Gershi Kock had dropped what should have been an easy save, he and defender Junior Sibande got and in each other’s way and ended up combining to put the ball in his own net.
Amajita again raised their game after the break. In the 54th minute Mthembu broke clear of the Brazil defence, but succeeded only in dragging the ball across the goal, not missing by much.
Three minutes later Ngidi was also close when he curled a left-footed shot onto the roof of the net.
With eight minutes of regulation time left Sibande whipped in a dangerous ball at the near post, which Mthembu did superbly to head in from a tight angle – his fourth goal of the tournament.
The final minutes took place in the Brazil box as South Africa pushed for a winner, but they could not find a way past an increasingly desperate Brazil defence.
Amajita had the first chance of extra-time when Maselaelo Seango hit a beautiful 35-yard shot which was bound for the top corner until de Oliveira made a superb diving save.
Seun Ledwaba then brought out another great save from de Oliveira with a shot from the edge of the box.
There was a chance apiece in the second half of extra-time as Mtjhembu just failed to get a decisive touch on Ledwaba’s cross, while at the other end Jean Deretti fizzed an effort inches wide.
The game went to penalties and each team missed a spot-kick, before Daylon Appolis saw unlucky enough to see his penalty hit the upright.