After storms had brought an early end to the action on day one, Spaniard Garcia seized the advantage when action resumed.
He carded a six-under-par 66 to grab a slender lead at Sun City, as a late charge saw him climb the leaderboard.
There had been sombre scenes ahead of the start of play - as players, officials and spectators held a minute's silence in memory of Nelson Mandela - before Garcia completed a round that included seven birdies in his last 12 holes.
Fellow Spaniard Gonzalo Fernandez-Castano was tied for second on five under, alongside Thomas Bjorn and Jamie Donaldson.
Overnight leader Luke Donald paid the price for a bogey on the 16th as he dropped to four under, two shots adrift, alongside local favourite Charl Schwartzel.