A first half stunner from Tokelo Rantie and an own-goal by Christopher Wekesa saw the visitors score twice in a game where they created a number of chances.
Kenya were awarded a penalty in the 71st minute and duly converted to level the scores but Gordon Igesund's men took four minutes to grab the lead again and a deserved win.
The usual script applied as Bafana failed to convert or create enough chances but with the changes in Igesund's first four games in charge, the victory away from home is a credible result.
Igesund will be pleased with the efforts of his troops against African opposition as he looks to finalise his squad for Afcon 2013.
Wayne Sandilands was handed a rare start ahead of Itumeleng Khune as the Bafana's keeper sat on the bench nursing an ankle niggle.
Kenya, 52 spots below South Africa in the Fifa World rankings at 128th posed little threat upfront and gave Sandilands little work for the evening, save picking the ball out of the back of the net for the Kenyan penalty.
The game began at a high tempo and South Africa were awarded a free-kick in a dangerous position on the edge of the Kenyan area in the second minute. It was taken quickly – trying to catch the home side off-guard – but it was an easily saved by Arnold Origi in goal.
In the tenth minute, Siphiwe Tshabalala spurned a close range chance as he found himself in perfect position inside the six yard area with just the keeper to beat but his first-time shot was off target, drifting out harmlessly for a goal kick.
Three minutes later, Tshabalala again was too hasty with a cross but the ball hit a Kenyan defender and Rantie was able to get his first strike on goal in, although it was well-wide.
Rantie was on the scoresheet before long with the opening goal in the 20th minute.
Lerato Chabangu showed great vision when it looked like there was little on in the middle of the field, his pinpoint pass through a gap in the defence saw Rantie run onto the ball and from the edge of the area he made no mistake, and smashed the ball into the back of the net to make it 1-0 to the visitors.
The home side had an appeal for a penalty in the 43rd minute, in what seemed their best chance of the first period. Wesley Kemboi went down in the box, but the referee opted to give the Kenyan a yellow card for diving to the groans of the home support.
Tshabalala, reportedly feeling dizzy, was taken off at the break and Sifiso Myeni replaced the Bafana playmaker.
Dino Ndlovu, who was came on for Rantie, nearly scored with his first touch in the 59th minute. From a Bafana corner, Kenya allowed the ball to bounce and Ndlovu pounced on the ball from close range, but the angle was too tight as his strike hit the wrong side of the post.
Bafana conceded a penalty in the 71st minute for a handball by captain Bongani Khumalo. Dennis Oliech stepped up for Kenya, and was clinical from the spot as he levelled the scores with 17 minutes left in the match.
The scores remained level for precisely four minutes. Bernard Parker ran at the home defence from a quick throw-in their half and his shot was deflected into goal by Wekesa for an own-goal to make the score 2-1 to Bafana. – Sapa