The Spaniard followed up an opening round of 65 with a 64 on Saturday, carding seven birdies before his only blemish of the day with a double bogey on the par-four 14th.
However, that was forgotten on the final hole where Garcia sank an eagle to move a shot clear of Roberto Castro, whose second successive score of six-under 65 propelled him up the leaderboard.
The American began the day with an eagle on the par-five second followed by five birdies to complete the front nine in 29.
The return was more inconsistent with a bogey, a double bogey and two further birdies but Castro nevertheless ensured his place among the leading pack.
Countryman Matt Kuchar was 10 under after completing his round in 66 while Justin Rose was among the biggest climbers of the day, his eight-under 63 lifting the US Open champion 52 places to nine under overall.
Rose was flawless on the course, carding four birdies on the way out and as many on the back nine.
The Englishman was soon joined by co-overnight leader Phil Mickelson, who was one under for the day after three holes.
Ian Poulter was a shot further back on eight under, his round of three under on Saturday taking him into a seven-way tie for sixth place.
Brian Davis, who sat alongside Mickelson at the top of the leaderboard on Saturday night, was less successful on the course as he fell six shots off the pace with a one-over 72 second round.