Andy Murray spoiled Croat Ivan Ljubicic's 30th birthday with a hard-fought 7-5, 7-6 victory on Thursday to advance to the semi-finals of the ATP event at Indian Wells.
The British world number four forced a baseline error from his big-serving opponent with a booming forehand down the line to take the tiebreak 8-6 and wrap up victory in just over two hours.
Murray next meets second seed and triple champion Roger Federer, who fended off a late challenge by 10th-seeded Spaniard Fernando Verdasco to triumph 6-3, 7-6 in the evening match at the Indian Wells Tennis Garden.
After exchanging early breaks of serve in breezy conditions on the stadium court, Murray again broke Ljubicic in the 11th game before winning the first set in 52 minutes.
The Scot held the initiative in the second set and served for the match at 5-4 after 74th-ranked Ljubicic was again broken after a mistimed backhand sailed wide.
Although Murray failed to hold, netting a forehand as the score reached 5-5, he finished the tiebreak strongly to stretch his win-loss record this season to 19-1.
"It was very hot and very breezy on the court," the 21-year-old Briton told reporters after matching Ljubicic's overall tally of six aces.
"From one end, it was difficult to dictate the points but I felt fine. Physically I was moving well again, hitting the ball better as the match went on."
Murray, who withdrew from last month's Dubai Championships and Britain's Davis Cup tie against Ukraine because of a virus, was a little surprised he had reached the last four.
"I wasn't thinking about the semi-finals at all," he said. "I was thinking about the first-round match and how I would get through that, each day working on my game and trying to get a little better.
"I have done that with each match," added Murray, who has already won two ATP titles this year. "And with the next match hopefully I'll play even better than I did today."
Federer, competing in his first event since losing last month's Australian Open final to Rafael Nadal, broke left-hander Verdasco in the fifth and ninth games to sweep through the opening set in 29 minutes.
The Swiss world number two charged 4-1 up in the second before suddenly becoming vulnerable on his own serve, being broken in the seventh and 11th games to trail 5-6.
However, the Spanish world number 10 failed to serve out to claim the set and Federer then squeezed through the tiebreak 7-5 to book his place in the last four.
"I played well for one-and-a-half sets and then Fernando made the whole match get a little tight," Federer said after saving two set points in the 12th game to beat the Spaniard for a third time in their three career meetings.