Diafra Sakho opened the scoring for the Lions of Teranga in the 12th minute after being played through on goal by man of the match Sadio Mane to beat goalkeeper Itumeleng Khune with a low shot inside the box.
Stuart Baxter's charges looked to pick out Percy Tau upfront but the Mamelodi Sundowns man was often caught offside after carving out space for himself.
Themba Zwane had a great opportunity to level matters in the 24th minute following a wonderful exchange of passes on the edge of the box but his powerful shot went straight to goalkeeper Khadim N'Diaye who parried it to Tau, who failed to take advantage.
Minutes later, Lebogang Manyama was unlucky to strike the crossbar after a cross was played in from the right.
Sadio Mane forced an own goal out of Thami Mkhize in the 38th minute after his initial low strike was saved by Khune's outstretched leg but the ball ricocheted off Mkhize's head and sailed into the net.
The hosts tried to fight their way back into the match with Manyama forcing a save out of N'Diaye from a free-kick but Aliou Cissè's troops stayed resolute at the back to go into the halftime break leading 2-0.
Sibusiso Vilakazi came close to pulling a goal back 11 minutes into the second half but his low shot inside the box was collected by the towering N'Diaye in between his legs.
Andile Jali was introduced on the hour mark with Manyama making way, while Siphiwe Tshabalala was also thrown in 10 minutes later in place of Zwane.
The Lions of Teranga were waiting to pounce on the counter-attack with Mane their point of reference when they got the ball going forward.
The tempo of the match died down somewhat after 80 minutes with Baxter's troops still trying to find combinations following the alterations.
Bafana's heads began to drop towards the closing stages of the match as they needed three goals to save their campaign, but they failed to bypass the visitors' defence as Senegal held on for the win to secure their ticket to the World Cup next year.
Bafana: Khune, Daniels, Gould, Mkhize, Hlanti, Furman, Mokotjo, Manyama (Jali, 63’), Zwane (Tshabalala, 69’), Vilakazi (Grobler, 83’), Tau.
Senegal: K. N’Diaye, Sané, Koulibaly, Sakho (Konaté, 78’), Kouyaté (A. N’Diaye, 86’), Niang (Ciss, 93’), Mané, Gueye, Ndoye, Sabaly, Gassama.