Hosts Zambia and South Africa will contest the final of the Four Nations tournament in Ndola on Saturday after they edged their semifinals in penalty shoot-outs.
Zambia saw off Zimbabwe 5-4 on spot-kicks after the teams had played to a 2-2 draw, while South Africa overcame Angola 6-5 after they had finished even at 1-1.
Angola and Zimbabwe will now contest the bronze-medal match, also on Saturday.
After a goalless first half in their semifinal, Zimbabwe led seconds after the break as Isaac Shamujompa netted for the visitors.
Justin Shonga equalised for the home side just past the hour-mark to continue his good form, but another South African-based player had Zimbabwe back in front minutes later as winger Talent Chawapiwa netted.
It looked as though that would be the final score before Lazarous Kambole salvaged a draw for the Zambians, who then held their nerve in the shoot-out.
South Africa sealed a place in the final as they also came from behind.
After Angola made the better start, Lebo Mothiba went close to the opener with he connected with a cross from Reeve Frosler, but Angola goalkeeper Lando Mavanga saved well.
Dean Furman was narrowly wide with a low shot, while at the other end Bafana goalkeeper Darren Keet made a smart saved to deny Herienilson Carmo.
But he could do nothing as Angola took the lead just past the half-hour mark when Buhle Mkhwanazi’s short back-pass led to the opener for Djalma Campos.
Bafana hit back five minutes into the second half as Mothiba opened his international account with a neat back-heel, the 23rd South African to score on his national team debut.
The momentum then swung in South Africa’s favour as Mavanga did well to deny Mothiba from Sifiso Hlanti’s cross, before Phakamani Mahlambi was brought down in the box for what looked a clear penalty, but the referee waved play-on.
Coach Stuart Baxter brought on Maritzburg United midfielder Siphesihle Ndlovu for Maphosa Modiba, and he immediately impressed with some dynamic play in the centre of the park.
Another substitute, Ryan Moon, came closest to a winner in 90 minutes when his header went inches wide from Themba Zwane’s corner.