The top seed, who has won the tournament 10 times, will meet Slovak Martin Klizan, who had dumped Novak Djokovic out in the second round, on Friday after powering past Garcia-Lopez in a quick-fire first set.
He raced into a 4-1 lead in the second but was slowed down when he surrendered his serve, although he soon broke back to finish off his opponent.
“When I was 4-1 a set up I lost a little intensity but in general I played well,” Nadal said. “I felt good from the start, playing with more intensity than yesterday and playing with more ease and comfort in every sense.”
Second seed Grigor Dimitrov survived an almighty scare against outsider Malek Jaziri to edge into the last eight, beating the Tunisian 7-5 3-6 7-6(8) following a nail-biting tiebreak.
Jaziri, ranked 88th in the world, hit back after surrendering the first set to comfortably take the second and he looked poised to cause the latest high-profile exit in Barcelona after Djokovic’s defeat and Kei Nishikori’s withdrawal through injury when he went 4-2 up against the second seed in the third.
Bulgarian Dimitrov came back to level at 5-5 but was under pressure in the 12th game, before holding on to force the tiebreak.
He finally ended Jaziri’s resistance on his fourth match point when the Tunisian found the net to end a match lasting two hours 49 minutes.
Dimitrov will meet Spaniard Pablo Carreno Busta, who beat Frenchman Adrian Mannarino 6-2 4-6 7-6 (8-6) in an another thrilling three-setter that had fans on the Rafael Nadal court watching the world number one turning their heads towards the action unfolding on the adjacent Court One.
Carreno Busta is ranked 11th in the world to Mannarino’s 27th but after blitzing the first set he succumbed in the second and survived a match point to take a delicately-poised tiebreak.
Klizan beat Spaniard Feliciano Lopez 6-1 6-4 to set up his meeting with Nadal while last year’s runner-up Dominic Thiem also made the last eight, beating Jozef Kovalik of Slovakia 7-6 6-2.
Thiem will meet Greek Stefanos Tsitsipas, who knocked out Spaniard Albert Ramos Vinolas 6-4 7-5.
Belgian David Goffin beat Russian Karen Khachanov 6-2 7-6(2) 6-0 to set up a clash with Spaniard Roberto Bautista Agut, who beat compatriot Pablo Andujar 6-4 6-1.