The Scot, seeded third, came back from a break down in the third set to win 6-4 3-6 6-3 6-2 in two hours and 51 minutes.
He goes on to face seventh seed David Ferrer, who beat ninth seed Marin Cilic 6-2 6-2 6-4.
Murray, 28, has now won all 14 clay-court matches he has played in 2015.
"I wasn't overly concerned," he said. "I had a lot of chances in the second set.
"He had one break point, which he obviously won, but throughout the course of the match I was creating many more opportunities than him.