Down 3-0 in the 75th minute, the South Africans scored three quick goals to leave the scores level at 3-3 at the end of regulation time, and force the match to a penalty shootout where they emerged victorious 5-3 and set up a repeat of the 2011 final where they lost to the hosts, Zimbabwe.
Things looked bad for Banyana when Barba Banda scored the opening goal for Shepolopolo in the 21st minute before increasing their lead on the stroke of half-time through Grace Chanda.
Zambia grabbed their third in the 73rd minute and it appeared the match was over as a contest.
Just six minutes into the second half, Shepolopolo was awarded a penalty after the referee adjudged defender Noko Matlou to have fouled Chanda.
But there was relief for Banyana Banyana when Rhoda Chileshe stepped up and ballooned her spot-kick over the crossbar.
With their never-say-die spirit, the South Africans clawed their way back into the game with a 77th minute goal from Leandra Smeda whose header was powerful for Hazel Nali to stop.
Three minutes later Thembi Kgatlana, who was a handful for the Zambia defence, was fouled and the referee pointed to the penalty spot. Smeda made no mistake to reduce the deficit to 3-2 with her second of the day.
With six minutes remaining on the clock, Kgatlana left her markers for dead and her cross found second half substitute Rhoda Mulaudzi who had an easy tap in to take the match to a penalty shootout.
Smeda, Bambanani Mbane, Matlou, Nompumelelo Nyandeni (who had also come on in the second half), as well as Lebohang Ramalepe converted their spot-kicks to send the South African bench into a frenzy.
Rachael Zulu, Grace Zulu and Lweendo Chisamu all scored for Zambia, while Ester Mukwasa missed her spot-kick.
Shortly before the final whistle, interim head coach Desiree Ellis had brought on goalkeeper Andile Dlamini in preparation for the penalty shootout.
In the end, Banyana Banyana triumphed 5-3 on penalties following a 3-3 stalemate after regulation time, with Smeda being voted as the player of the match.
With the victory, South Africa will now face Zimbabwe in the final.
This is Banyana Banyana’s fifth straight final in the tournament they won in 2002, 2006, and 2008 but came second in 2011 where they lost to Zimbabwe.