Botswana edged Lesotho 2-1, while Zambia needed penalties to see off old foes Zimbabwe in what was a repeat of the last two COSAFA Cup finals.
The Warriors proved victorious on both those occasions, but this time it was Zambia who came out on top, albeit via the lottery of penalties after the teams had played to a 0-0 draw.
The first real opportunity of the match fell to Admiral Muskwe, who failed to connect with a Divine Lunga cross, but it looked as though the opener would come at the other end.
Zambia were awarded a penalty, but Austin Muwowo saw his effort saved by Zimbabwe goalkeeper Elvis Chipezeze, who bravely got to the ball before Muwowo could stab home the rebound.
Tinotenda Kaderwere, one of the heroes of Zimbabwe’s final win last season, had an excellent chance to win the game late on, but fired over the bar from close range when it is seemed easier to score.
Khama Billiat seemed to clip as he took the first penalty for Zimbabwe in the shoot-out and it was saved by Zambia goalkeeper Sebastian Mwange, and when Muskwe skied the Warriors second kick, they were always up against it.
Zambia held their nerve to score all of their penalties and win a place in Saturday’s final, where they will look to lift the regional trophy for the first time since 2013.
Botswana clinched a place in a second ever COSAFA Cup final with a 2-1 victory over Lesotho in a pulsating first semi-final.
They were ahead inside seven minutes as Mothusi Cooper provided the cross and veteran forward Joel Mogorosi headed the ball into the back of the net.
Segolame Boy fired just wide soon afterwards and new TS Galaxy goalkeeper Ezekiel Morake had to make a number of good stops before The Zebras doubled their advantage.
Boy fired a rasping shot into the back of the net to send the Botswana fans wild and the team into the halftime break with a 2-0 lead.
Lesotho came back strongly in the second period though and after Morake had denied them a few more times, Sera Motebang headed home with 10 minutes to play to set up a nervy finish.
Botswana’s only other final appearance was in 2016 when they lost 3-2 to South Africa.
Lesotho will now play Zimbabwe for the bronze medal at the same venue on Friday evening at 19h30 (17h30 GMT), having also finished third in 2018.
South Africa and Malawi will contest the Plate final at the same venue at 17h00 (15h00 GMT), in what will be a first COSAFA Cup meeting between the sides since The Flames won a shoot-out on their way to lifting the Plate in 2015.
Lesotho 1 (Sera 79’)Botswana 2(Mogorosi 7’, Boy 32’)
Zimbabwe 0 Zambia 0 – Zambia win 4-2 on pens
South Africa vs Malawi (KO 17h00; 15h00 GMT) – Moses Mabhida Stadium
Cup Third-Place Play-Off
Lesotho vs Zimbabwe (KO 19h30; 17h30 GMT) – Moses Mabhida Stadium
Matches Played: 17
Goals scored: 44
Biggest victory: Malawi 3 Seychelles 0 (Group B, May 26)
Most goals in a game: 4 – Eswatini 2 Mauritius 2 (Group A, May 25); Eswatini 2 Comoros 2 (Group A, May 27); South Africa 2 Botswana 2 (Quarterfinals, June 2); Zambia 2 Malawi 2 (Quarterfinals, June 2)
3 goals – Gabadinho Mhango (Malawi), Ashley Nazira (Mauritius), Gerald Phiri Jnr (Malawi)
2 – Felix Badenhorst (Eswatini), Issaskar Gurirab (Namibia), Youssouf Ibroihim (Comoros), Richard Mbulu (Malawi), Luther Singh (South Africa)
1 – Khama Billiat (Zimbabwe),Segolame Boy (Botswana), Emmanuel Chabula (Zambia), Chikoti Chirwa (Malawi), Thatayaone Ditlhokwe (Botswana),Lebogang Ditsele (Botswana),Charles Hambira (Namibia),Soulaimana Ibouniyamine (Comoros), Jeituso (Mozambique), Hassan Kajoke (Malawi), Ali Nassim (Comoros), Absalom Iimbondi (Namibia), Joslin Kamatuka (Namibia), Grant Margeman (South Africa), Siboniso Mamba (Eswatini), Joel Mogorosi (Botswana), Sera Motebang (Lesotho), Austin Muwowo (Zambia), Sabelo Ndzinisa (Eswatini), Boina Bacar Raidou (Comoros), Evans Rusike (Zimbabwe), Dan Serunkuma (Uganda), Sadney Urikhob (Namibia), Witi (Mozambique)