The Spanish world No 12 followed up his first-round 68 with 70 at Royal Troon to move to four under, six shots off the lead going into the weekend.
Garcia dropped shots at the 12th and 18th and does not feel he has been playing particularly well, but is pleased not to be far out of contention.
The 36-year-old, a two-time Open runner-up, said: “The course was playing totally different from yesterday, it was definitely tougher.
“It was just a shame about those two three-putts. Other than that, I’m happy with the round.
“I still don’t feel like I’m playing up to my standards, so I think it’s still a good score.
“I’d love to be two or three shots better, there is no doubt about that, but I’m sure everybody would.
“I’m still out there in the top 10 with a shot at it. Hopefully I’ll keep improving as the weekend goes on, and hopefully I’ll have a chance on Sunday.”
Zach Johnson remained hopeful of defending his Open title despite a frustrating end to his second round.
The two-time major winner climbed the leaderboard to seven under only to fall back to five under, just one better than where he began the second day, after bogeys on the 15th and 18th.
Johnson said: “I really had a great opportunity today to put a nice low number up but I feel like I gave a few back there at the end.
“I actually hit a good tee shot on 15 but still made a bogey. At 16 I was essentially trying to make a four but I barely made a five and 18 was bad too. Sour endings as far as where I put myself there.
“But there are certainly some positives. I feel like the best thing going for me right now is I haven’t played my best yet and I can still go out and do that this weekend.”