Garcia completed 36 holes at 11-under-par 131, where he was joined by Richard Finch (66) and first-round leader Soren Kjeldsen (67). Both Finch and Kjeldsen bogeyed the 18th hole to fall into a share of the lead with Garcia.
Last week's winner Alvaro Quiros also posted a 66 Friday to move into a tie for fourth place at minus-9. He stands alongside Simon Dyson (67), Peter Hedblom (65), Francois Delamontagne (67) and David Lynn (66).
The Spaniard started his climb up the leaderboard with a birdie on the seventh. He came right back with birdies at eight and nine to make the turn at minus-7.
Garcia birdied the par-5 13th for the second day in a row. He collected back-to-back birdies from the 15th to get to 10 under. After hitting a remarkable shot through a tree, Garcia birdied the last to finish at minus-11.
'It was a good shot to finish with. I've been there many times so I knew what to do,' Garcia stated. 'I didn't expect it to come out that great. I knew what I had to do...It was good to see I was able to do it.'
Finch, for the second day in a row, was on fire on the front nine. He birdied the third, then birdied Nos. 5 and 6 to move to 9 under.
The Englishman birdied seven and eight, both for the second straight day. He continued his hot play with a 20-foot birdie putt on the ninth at Club de Campo del Mediterraneo.
Around the turn, Finch kicked in a short birdie putt on the 10th to cap a run of six straight birdies that gave him the lead at 13 under. However, he stumbled to a bogey on the par-4 11th, then bogeyed the 18th as well to slide into a share of the lead.
'I didn't realize until I was going down the 10th that I had five in a row,' Finch admitted. 'Then I hit my second really close at the 10th and was keen to keep that run going. Thought I hit a good shot on the 11th, but just it hit too hard and it went to the back of the green. All in all it was a disappointing bogey.'
Kjeldsen faltered to a bogey on the second, but atoned for that mistake with a birdie on the par-4 third. For the second day in a row, he birdied the seventh and eighth.
On the back nine, Kjeldsen collected birdies on 11 and 13. He moved into a share of the lead at 12 under with a birdie on the par-3 17th.
Kjeldsen, who played one group behind Finch, then bogeyed the last creating the three-way tie.
'I played brilliantly today, I really did,' said Kjeldsen. 'I controlled the game beautifully. I got off to a slow start, then really got into it.'
Thomas Levet carded a 3-under 68 and is alone at 8-under-par 134. Ignacio Garrido, Mikael Lundberg, Phillip Archer and Rory McIlroy are tied for 10th at minus-7.
The cut line fell at even-par 142 with 66 players advancing to the weekend.