Substitute Thuso Phala netted the goal on 81 minutes at a sweltering Orlando Stadium, raising Bafana Bafana's confidence for CAF's premier tournament, taking place in Equatorial Guinea from January 17 to February 8.
Both teams, though, sustained injury scares, as Thabo Matlaba was forced off for Bafana, while Mamelodi Sundowns goalkeeper Kennedy Mweene picked up a knock for the 2012 continental champions.
In a contest lacking goalmouth action, Zambia threatened first when Given Singuluma rifled an effort wide on the angle in the 11th minute.
Six minutes later Bafana midfielder Mandla Masango scuffed his attempt from the edge of the area after Matlaba combined smartly with Orlando Pirates teammate Oupa Manyisa down the left.
The Pirates duo nearly linked up again to telling effect 10 minutes before the interval but Matlaba narrowly failed to reach Manyisa's dangerous ball across the face of goal after 'Ace' did well to lose his marker.
The visitors suffered a blow on the stroke of half-time, as Mweene left the field with a suspected groin problem, prompting the introduction of Danny Munyao.
The second period was also shy of attacking opportunities, although Bafana captain Anele Ngcongca nearly broke the deadlock on the hour-mark but he was denied by Munyao from close range.
Both coaches made numerous changes in the tie, with Bafana boss Ephraim Mashaba bringing on goalkeeper Brilliant Khuzwayo, Bernard Parker and Phala among others, while the likes of James Chamanga, Christopher Munthali and Mukuka Mulenga were also handed game-time for Chipolopolo.
Phala would prove to be the match winner, as he drilled in a late powerful shot after being teed up in the area by Parker.
Matlaba then gave way to fellow defender Thulani Hlatshwayo with four minutes to go as the Bucs left-back had to be helped off the pitch.
Soon after Phala could have grabbed a second goal, with Parker again creating the chance, but the SuperSport United winger fired wide of the target.
SA: Keet (Khuzwayo 62'), Ngcongca, Matlaba (Hlatshwayo 86'), Mathoho, Coetzee, Sangweni (Zwane 52'), Letsholonyane (Vilakazi 58'), Masango (Phala 74'), Manyisa, Ndulula (Parker 44'), Rantie.
Zambia: Mweene (Munyao 45'), Nkausu, Musonda (Mulenga 62'), Mtonga, Sunzu (Munthali 55'), Kabwe, Sinkala (Sautu 88'), Lungu (Chamanga 57'), Kalaba, Singuluma, Mayuka (Mwanza 45').