Garcia finished with a pair of birdies for a 4-under-par 68, which took his three-day total to 16 under.
Henrik Stenson missed a birdie chance on the 17th from three feet but did not fail from four feet on the 18th, aided mostly by the lights from the grandstand. The Swede, in the group ahead of Garcia, shot a 67 to move into second at 13 under.
Garcia started with a bogey and seemed to be in trouble a few times on the front nine - including when he nearly hit his tee shot into the water on the par-3 seventh but got up and down for par.
The Spaniard, who is yet to finish in the top 10 in seven appearances in the tournament, instead finished 4 under on the back nine.
''Yeah, it was a nice round,'' said Garcia, currently ranked No. 15 in the world. ''Obviously, it wasn't easy, a little shaky here and there at the beginning, but back nine was great. A lot of good shots, a lot of good putts.''
The late Saturday finish was prompted by the halting of play in the second round on Friday because of high winds. Players began the third round in threesomes and started from the first and 10th tees.
''At the end, it was very, very dark, I'll tell you that,'' said Garcia, whose third round began with countryman Nacho Elvira and South Africa's George Coetzee on the first tee. ''When we were walking on 17, I thought, 'Well, it will probably be a little dark, but not too bad.'
''But then it gets dark very, very quickly here. Couldn't really see much on the last three shots. Pretty much couldn't see the ball land and the last putt was a little bit of a feel and a little bit of the read that George gave me, and I'm very fortunate to be able to make it.''
Stenson, the 2007 champion, also wobbled a bit on the first few holes, including making a three-putt bogey on the sixth for only his second bogey of the tournament.
''Yeah, the hitting has been really good when it's been on, and then there's been some very poor shots in between, but I managed to save myself a lot,'' said Stenson, the world No. 4.
''I am looking forward to tomorrow. Make a couple of quick birdies and try to put some pressure on Sergio.''