The eighth seed was below his best for the opening two hours of the contest, but he dug deep to come through by a 6-7 7-6 6-3 6-3 scoreline.
The opening set was fiercely contested with both men registering a break of serve, but it was Garcia-Lopez, looking to reach the last 16 of a Grand Slam for just the third time, who controlled the resulting tie-break to edge in front.
The Spaniard had a chance to go even further ahead in the second, creating a set point in a tie-break, but Berdych rallied to win three points in a row to level the match.
The missed opportunity affected Garcia-Lopez and Berdych was able to capitalise, breaking four times on the way to moving closer to another appearance in the latter stages of a Grand Slam.
Garcia-Lopez was having some success on the Berdych serve, but he had greater problems trying to hold his own, and his Czech opponent struck three more times to earn his place in the next round.