Vijay Singh, who shared the lead with Perry after Thursday's opening round, carded a second-round, even-par 72 and is tied for fourth place with Chris DiMarco (71), 2001 U.S. Open winner Retief Goosen (67) and Darren Clarke (71). The group is at minus-seven at The Gary Player Country Club Course.
A thunderstorm halted play for two hours on Friday, but all 18 competitors still completed their rounds.
Perry mixed three birdies and a bogey for a front-nine 34. He birdied the par-5 14th then rolled home a 20-footer for birdie at the closing hole to pull ahead of Garcia and Kelly, who were both in the clubhouse.
Garcia, who won this title in 2001, made a big move Friday. He sank a 16-foot eagle putt at the par-5 10th and knocked his approach to tap-in range for birdie at No. 15. Garcia holed a 20-foot birdie putt at the 16th and closed with a birdie for a round of 6-under-par 66.
'I feel pretty comfortable at the moment,' said Garcia. 'I am playing well and if I can keep things going it will be a fun weekend.'
Kelly was 1-under around the turn but made birdies at 10, 13, 14 and 16 to get to minus-10. He left himself with an eight-footer for par at the last, but drained the putt to stay within one of Perry's lead.
'If you keep these conditions, I think the guys can go at it,' said Kelly. 'If the wind starts to blow, it's tough to get the ball on the fairway. Scores won't be quite as low.'
Tim Clark shot a 71 on Friday and is alone in eighth, followed by Adam Scott (74), Stephen Leaney (72) and Charles Howell III (67), who are tied for ninth place at four-under-par 140.
Ernie Els, the defending champion and three-time winner, struggled to a three- over 75 on Friday and is in last place at 3-over-par 147.