The 31-year-old South African, the world number 50, carded a 67 at Leopard Creek Country Club to reach 11 under.
Englishman Eddie Pepperell recovered from an opening 74 with seven birdies and an eagle in a 65 and he shares sixth place, six strokes off the pace.
But Matt Ford, joint third overnight, had a 74 and is eight adrift in 14th.
Former Masters champion Charl Schwartzel built a five-stroke lead at the halfway stage of the Alfred Dunhill Championship in Malelane, South Africa.