It took an 88th-minute free-kick from late sub Daniel Alves, curled around the wall from 19 yards, for Brazil to earn its spot in the final. For their part, the South Africans came close to scoring on a 25-yard shot from Steven Pienaar that was palmed wide by keeper Julio Cesar. And Aaron Mokoena headed high on a good close-range chance.
But Bafana Bafana otherwise did little to take advantage of Brazil's subdued performance, which came after outscoring its first-round opponents 10-3 - in wins over Egypt (4-3), USA (3-0) and Italy (3-0).
"We were expecting a difficult game mainly because we've played six very tough games now in the space of just 19 days," said Dunga, whose team arrived in South Africa days after World Cup qualifying. "Obviously that takes its toll. Even so we performed well and managed to get the win. Games last for 90 minutes and you have to use all the weapons you have at your disposal."
June 26 in Johannesburg
Brazil 1 South Africa 0
Goal: Dani Alves 88.
Brazil -- Julio Cesar, Maicon, Lucio, Luisao, Andre Santos (Dani Alves 82), Silva, Felipe Melo, Ramires, Kaka, Robinho, Luis Fabiano (Kleberson 90).
South Africa -- Khune, Gaxa, Booth, Mokoena, Masilela, Pienaar (Van Heerden 90), Dikgacoi, Mhlongo, Modise (Mashego, 90), Tshabalala (Mphela 90), Parker.
Referee: Massimo Busacca (Switzerland).