The South African world number 50, five shots ahead after day two, dropped a shot at his opening hole in round three but posted a 70 to reach 13 under par.
Sebastien Gros, who fired nine birdies in a 63, shares second place with fellow Frenchman Benjamin Hebert.
Scot David Drysdale is the highest placed Briton in a tie for fifth spot.
Drysdale, 40, the world number 345 who is yet to win on the European Tour, had three birdies and an eagle in his 69, leaving him six strokes off the lead.
But England's Eddie Pepperell, who had a 65 on Friday, dropped three shots in a 74 and slipped into a share of 25th, 10 strokes adrift.
South African Schwartzel, the 2011 Masters champion, is seeking his fourth Dunhill title in 11 years but was unhappy with his third round at Leopard Creek Country Club, where he finished well with a birdie at 17 and a scrambled par at the last.
"I felt really uncomfortable to be honest, I struggled," the 31-year-old said.
"As good as the long game was the first few days, it was as bad today and it made me feel very uncomfortable.
"On the positive side, I've shot a lot worse scores playing like this and that means there is an improvement in my game."
Charl Schwartzel will take a three-stroke advantage into the final round of the Alfred Dunhill Championship in Malelane, South Africa.