The eighth-seeded Granollers beat Haase 7-6 (0), 3-6, 6-4.
The Dutchman was 12-0 at the event going into the match, having won it in 2011 and 2012. In the other semifinal, Monaco defeated seventh-seeded Albert Montanes of Spain 7-6 (2), 7-5.
Granollers has gone beyond the quarter-finals of an ATP event for the first time this season.
The 53rd-ranked Spaniard is looking for his fourth career title and first since beating Monaco in the final at Valencia two years ago.
Granollers is 2-1 against Monaco, though the Argentine won their only previous clay-court match in straight sets in 2008.
Monaco won the third of his eight career titles in Kitzbuehel in 2007.
The 31st-ranked Argentine can clinch his second title of the year after winning in Duesseldorf, Germany, in May.
After winning the opening set, Monaco failed to serve out the match against Montanes twice, at 5-2 and 5-4, and missed four match points on the Spaniard's serve at 5-3.
He then broke Montanes a fourth time and wrapped up the victory on his fifth match point.
Granollers took the first set against Haase with flawless attacking play in the tiebreaker after both players held serve throughout.
Early in the second, Haase managed the first break against Granollers but dropped his own serve the next game.
Haase added another break for 4-3 and the Dutchman won five straight games to take the set and lead 2-0 in the third.
Haase missed two break points for 3-0, lost five of the next seven games before serving a double-fault on match point.
Results from day five of the ATP Kitzbuehel Cup (x denotes seeding):
Marcel Granollers (ESP x8) bt Robin Haase (NED) 7-6 (7/0), 3-6, 6-4
Juan Monaco (ARG x2) bt Albert Montanes (ESP x7) 7-6 (7/2), 7-5