Murray, the defending champion, played tough defense from all corners of the court, consistently making Roddick hit a few extra shots when some points seemed to be in the American's favor. Murray also showed his power, mixing in 14 aces to Roddick's nine.
Roddick had his chances, but Murray fended off five of six break points.
"I didn't covert them, so I deserve to lose," Roddick said.
To make matters worse, Roddick only won 24 percent of the points on his second serve.
The first set went to a tiebreaker, after the players traded breaks of serve.
Down 3-5 after having his serve broken, Roddick pinned Murray to the baseline and finally mixed in a short ball that Murray couldn't handle to break right back.
The tiebreaker was a see-saw affair. Roddick growled "Take It! Take It!" after earning a mini break to go up 6-4. But Murray fought back gamely, and came up with an ace and a service winner when he needed them most.
Roddick came in to net twice while down set point, but Murray threw in a great lob and then punished a backhand passing shot that left Roddick shaking his head as he went back to his chair.
Murray's lobs kept Roddick at bay, a ploy the Brit said he used to keep Roddick from crowding the net. Lobbing over the 6-foot-10 Karlovic would be a different matter, Murray said.
"I probably won't try that as much tomorrow," Murray said.
Murray is now 3-1 against Roddick, who he beat last year in San Jose on the road to his first ATP title.
Jimmy Connors, Roddick's coach, text-messaged Roddick before the match, urging him to be aggressive. But Roddick seemingly couldn't find enough angle to hit past Murray, or enough pace on his approach shots to force the issue, Roddick said.
The win pits Murray against Karlovic, who stormed past Germany's Benjamin Becker 7-6 (5), 7-5, powered by 27 aces.
"I was serving really good and it was the key to all my victories here, but also in the crucial moments, I returned also well," Karlovic said.
Karlovic also knocked out seeded Americans James Blake and Mardy Fish. In San Jose, the Croatian looked for his first ATP title.
For most of the match, Becker was stuck in between two worlds with his return game _ neither of them pretty. When he stood far behind the baseline to return serve, Karlovic would spin in a 109-mph offspeed serve to pull him wide. If Becker dared to creep in and take the ball early, Karlovic would boom a serve up the middle, often topping 140 mph.
Becker took the loss in perspective after the match, surmising that if the stars aligned, Karlovic can be broken at least once more.
"If you guess right four times and hit it perfectly, then he can be broken, but it's like a gamble," Becker said after the match, adding it was the strongest service game he has ever faced.
Karlovic, who came in ranked No. 104, has lost only one service game so far in the tournament. He has 87 aces heading into Sunday's final.
Murray acknowledged that his return of serve is the best component of his game. Likewise, he accepted the fact that his bread and butter would be put to the test against Karlovic, who is having the best week of his career.
"It's going to be a fun match tomorrow. I've never played Karlovic before. I think he's averaging 22 aces a match here, so it's going to be fun," he said wryly.
Murray's brother Jamie also has a date on the court Sunday, paired with doubles partner Eric Butorac. They beat Scott Lipsky and and David Martin 6-4, 7-6 (7) to reach the finals.