Bafana dominated the early exchanges, and had the chance to go ahead in the first minute of the match, when Lerato Chabangu sent in a pinpoint pass to find Kermit Erasmus, but the Orlando Pirates man could not keep his header on target.
Happy Jele had a chance 10 minutes later, after a set-piece by Siphiwe Tshabalala, but his header also went just wide.
Swaziland came close on 15 minutes, when Nkosingiphile Tsabedze ran onto a long high ball from the left wing. He beat Rooi Mahamutsa with a dummy, but scuffed his shot just wide of the post, brushing the side netting.
Bernard Parker beat two men to take a shot on 18 minutes, but it presented little danger for Swazi goalkeeper Nhlanhla Gwebu.
Just before the half hour mark Swaziland made a foray at goal, when Senzo Meyiwa failed to deal with a cross from Tony Tsabedze. The Pirates keeper flapped at the ball, which fell dangerously into the path of the onrushing Swazis, but they could not keep their shot down and the ball sailed over the bar.
On 36 minutes, Tshabalala came close, after some good work from Thabo Matlaba down the left wing, but he headed straight into Gwebu’s arms.
Bafana exerted some pressure on the Swazi defence as the half wound down, but the players walked off with the score still 0-0.
Gordon Igesund made two changes at the start of the second half, bringing on Lennox Bacela for Erasmus and Bongani Zungu for Chabangu.
And the substitutes made an immediate impact, working together to send the ball through to Letsholonyane, with a pin-point pass from Zungu. 'Yeye' had space and buried a cool shot past Gwebu for his second international goal in 46 appearances.
Zungu then doubled Bafana’s lead just seconds later, rounding the keeper and slotting home with an expert finish for his first Bafana goal.
Meyiwa prevented the Swazis from hitting back on 53 minutes, making a great save to deny Bheki Dlamini.
Thabo Nthethe got his name on the scoresheet on 63 minutes, after the ball fell kindly for him the area after some casual defending from Swaziland. The Bafana stand-in captain turned and hit home with a low volley for his first international goal.
Letsholonyane hit a well-taken free-kick on the 70th minute, which was headed for the top corner but tipped over goal by the keeper.
Dlamini came close for Swaziland three minutes from time, with a swerving long-range strike, but Meyiwa had it covered and made a composed save.
Swaziland line-up: Nhlanhla Gwebu, Tony Tsabedze, Sifiso Maseko, Sanele Mkhweli, Sifiso Mabila, Machawe Dlamini, Bheki Dlamini, Darren Christie (Wonder Nhleko 62), Sabelo Ndzinisa (Barry Steenkamp 76), Nkosi Tsabedze, Felix Badenhorst (Ndoda Tisuka Mthethwa 87)
South Africa line-up: Senzo Meyiwa, Happy Jele, Thabo Matlaba (Tefu Mashamaite 62), Rooi Mahamutsa, Thabo Nthethe, Reneilwe Letsholonyane (Hlompho Kekana 78), Siphiwe Tshabalala (Sibusiso Vilakazi 61), Andile Jali, Lerato Chabangu (Bongani Zungu 46), Bernard Parker (Edward Manqele 69), Kermit Erasmus (Lennox Bacela 46)