Morgan Gould nearly opened the scoring in the eighth minute following a headed pass into the penalty box by Clayton Daniels from the far left side but his volley from 12 yards sailed over the bar.
Stuart Baxter's troops played deep in their own half and had space to attack when they looped balls over the defence. They looked threatening whenever they entered the final third.
After half-an-hour, Bafana were comfortable on the ball and started to play higher up the pitch, taking away the stranglehold of possession from the Lions of Teranga.
Sibusiso Vilakazi should have sent Bafana ahead in the 37th minute after going through inside the box but his low shot was saved by goalkeeper Alfred Gomis and Keagan Dolly could not hit the target from a rebound.
Sifiso Hlanti nearly broke the deadlock spectacularly from a direct free-kick three minutes before halftime but his left-footed strike from 25 yards went agonisingly wide with the goalkeeper seemingly beaten.
Alou Cissè's charges did not trouble goalkeeper Itumeleng Khune the whole half despite holding better possession in the first half-an-hour, while Bafana missed their chances to go into the lead as the first stanza ended goalless.
Opa Nguette punished Bafana 10 minutes into the second half after goalkeeper Khune misjudged the flight of the ball while off his line and Nguette reacted quicker than the visitors' defenders to lob the ball into a gaping net, 1-0.
Baxter's charges were offered a lifeline in the 62nd minute after they were awarded a penalty, but Themba Zwane stepped up and missed the target, hitting his strike wide.
Tau made up for Zwane's penalty miss two minutes later as he hit a low pile driver into the far bottom corner from the edge of the box following a pass from Dolly, 1-1.
Andile Jali was brought on in the 70th minute in place of Zwane, whose confidence took a knock after missing the penalty.
Alfred N'Diaye hit the underside of the crossbar a minute later with Khune beaten but he was crucially flagged offside after a goal-mouth scramble from the ricochet.
Tau had a chance to send Bafana ahead with five minutes to go but his low shot was collected by Gomis inside the box following a counter-attack.
However, Kara Mbodji sealed the win for for Cissè's troops in stoppage time with a powerful downward header from the centre of the box that beat Khune hands down, 2-1.
Senegal: Gomis, Mbodji, Kouyate, Wague, P. Ndiaye (Ndoye 80'), Sabaly, A. Ndiaye (Diousse 88’), Gueye, Niang (Ciss 73'), Sow, Nguette.
Subs: Koulibaly, Diop-Degoud, Mbengue, Ciss, Konate, K. Ndiaye, Sakho, Sane, Diousse, Diagne, Gassama, Ndoye.
Bafana: Khune (c), Mkhize, Hlanti, Daniels, Gould, Furman, Zungu, Zwane (Jali 74'), Tau, Dolly, Vilakazi (Manyama 84')
Subs: Sandilands, Madisha, Mathoho, Langerman, Mokotjo, Mabunda, Jali, Mahlambi, Manyama, Tshabalala, Ndlovu, Grobler.