Botswana and Zambia will contest Saturday's final of this year's Cosafa Cup in Durban
Zambia beat holders Zimbabwe on penalties in Wednesday semi-finals success while Botswana beat Lesotho 2-1 in the south African regional championship.
Lesotho will now play Zimbabwe for the bronze medal on Friday evening.
The Zambians held favourites Zimbabwe to a goalless draw in a match-up that was repeat of the last two tournament finals.
Zambia could well have settled the game inside 90 minutes but Austin Muwowo saw a penalty awarded to them saved by Zimbabwe goalkeeper Elvis Chipezeze, who bravely got to the ball before Muwowo could stab home the rebound.
In the shootout Zimbabwe duo Khama Billiat and Admiral Muskwe missed the first two kicks to hand the win to Zambia 4-2 on penalties.
Zimbabwe were without coach Sunday Chidzamba, who had gone home after the death of his father at the weekend.
While Zimbabwe were playing with the squad that will go to the Africa Cup of Nations the Zambians are using the tournament to rebuild the team in the wake of its failure to qualify for Egypt.
Botswana reached the final for only the second time as they edged Lesotho 2-1 in the earlier semi-final in the coastal city, which stepped in as emergency hosts after Zimbabwe said they could not afford to hold the event
The Zebras, who lost to South Africa in the 2016 final, took a two-goal lead through veteran forward Joel Mogorosi's seventh minute header and Segolame Boy's 32nd minute rocket.
But Lesotho came back strongly after the break and eventually pull one back with 10 minutes to play through Sera Motebang but could not find an equaliser to ensure a nervy finish.