World No.32 Opelka fought back from a set down in Toronto to knock out favoured No.3 seed Tsitsipas in two hours and 32 minutes.
The 23-year-old American triumphed 6-7 (2-7) 7-6 (7-4) 6-4, booking a spot in his first ATP Masters 1000 final.
Opelka sent down 17 aces but also hit 27 groundstroke winners in the shock victory over 2021 Australian Open semi-finalist Tsitsipas who had beaten in-form Casper Ruud in the quarter-finals.
"I played great," Opelka said. “These courts suit my game, it is no coincidence that John Isner is in the other semi-final.
"Stefanos has definitely improved his returning. Come 5-5 in the first set, a lot of balls started to come back. He is a thinker and has a high tennis IQ, so it was expected, but that is what separates him from the rest of the pack."
Opelka was aided by an excellent first serve percentage of 72 per cent, winning 62 of 81 points when he made his first serve.
Both first two sets went to tiebreaks, with Tsitsipas failing to generate a break point until the third set. Opelka made the first break of the match in the seventh game of the third set and held serve twice after to seal victory.
World No.2 Medvedev cruised into the decider with a commanding win over John Isner in less than an hour.
Medvedev, who was runner-up in Toronto in 2019, won 6-2 6-2 over the big-serving American, with the match lasting 54 minutes.
Isner could only manage four trademark aces for the match, while the Russian had 11 and broke the American four times from seven opportunities.