After losing the first set, the number three seed stamped his authority on the second, converting two break points to force a decider for a third consecutive match this week.
"I knew that I had to do something a little bit differently today. I couldn't give him too much rhythm," Kyrgios said after the match.
The 22-year-old Kyrgios was dominant on serve, hitting 19 aces and winning 82 percent of his first-serve points, and broke Dimitrov in the seventh game of the final set to claim his first victory over the Bulgarian in three meetings.
ATP Monte Carlo
'He’s got no manners' - Evans slams 'embarrassing' Musetti
Outrageous 'sneak attack' point from Kyrgios
World number 21 Kyrgios could clinch his first ATP Tour title on home soil on Sunday and make a huge statement ahead of the Australian Open, which begins at Melbourne Park on Jan. 15.
In the other semi-final, Harrison came back from a set down to end the dream run of Australian wildcard Alex De Minaur in a 4-6 7-6(5) 6-4 victory.
The 18-year-old De Minaur raced past Harrison to claim the first set before forcing a tiebreak in the second, where he cruised to a 5-3 lead.
Standing just two points away from his first career final, De Minaur committed a string of errors, including a double fault to concede a set point to Harrison, allowing the world number 47 back into the match.
De Minaur started flat in the decider and Harrison pounced on the opportunity, breaking his opponent's serve twice to lead 5-1.
Harrison was broken while trying to serve out the match at 5-2 but recovered and held to love to reach only his third ATP Tour final, all of which have come since February last year.
Heading into the final, Kyrgios has a 2-0 head-to-head advantage with Harrison yet to take a set off the Australian.
"I know that he's a dangerous opponent. He can serve very, very well and he's obviously won a lot of matches here," Kyrgios said.
Give Benoit Paire a break - men's tennis is desperate for characters
Highlights: Britain's Norrie shocks Dimitrov in Miami