In a gruelling match that lasted until the small hours of the Mexican morning, the Bulgarian No 1 recovered from the loss of the first set to win 4-6, 7-6 (7-5), 7-6 (7-3), and book a showdown with big-serving South African Kevin Anderson.
Murray, who was playing in his first semi-final since winning Wimbledon last year, started strongly but wavered enough to allow Dimitrov to win a second-set tie-break.
The 22-year-old Bulgarian then fluffed a chance to break Murray for victory in the decider but dominated the last tie-break to reach the third final of his career. "At the moment it feels like the best win of my career," Dimitrov said. "I always thought Andy was an unbelievable player. We all know how he competes. I was really happy with the way I played today. I wanted to win badly. He doesn't give up easily, but I'll take that win in two tie-breaks."
Murray dropped his opening service game in each of his previous three matches last week, but got an immediate break when Dimitrov pulled a forehand wide after a lengthy rally. Despite facing three break points, Murray held for a 2-0 lead.
Dimitrov held to get himself on the board and Murray followed suit, before sealing a second break for a commanding first-set advantage.
The Bulgarian took the first game of the second set and after Murray held, Dimitrov won an epic rally to go 2-1 up. While Murray could seemingly do no wrong on his own serve, Dimitrov was giving nothing away and the Scot did well to force the tie-break. However, Dimitrov quickly surged into a lead and took the set despite a fightback from Murray.
Dimitrov built a 4-2 lead in the third set before Murray clawed a game back and the tug-of-war continued until Dimitrov powered through the tie-break to clinch victory over the No 2 seed in just under three hours.
Murray now travels to New York to participate in World Tennis Day at Madison Square Garden before moving on to the Indian Wells ATP Masters Series event.
Elsewhere, Roger Federer produced another brilliant comeback to beat Tomas Berdych 3-6, 6-4, 6-3 in the Dubai Duty Free Championships final and take the title - his 78th at tour level -for a sixth time.
Such an outcome looked unlikely when Federer lost the first set, squandering an early break by losing four games in a row from 2-1 ahead and managing to get just 40% of his first serves in.
The Swiss saved consecutive break points with aces in the fifth game of the second set but sent a forehand wide on the next one to fall 3-2 behind.
Berdych, though, failed to press home his advantage, immediately handing back the break and then losing the last two games of the set without winning a single point.
Federer broke his opponent in the fourth game of the decider and while Berdych clung on on his own serve Federer held his nerve to serve out for the hard-fought win.