The US Open runner-up, who has enjoyed a sensational run of form since Wimbledon, defeated Egor Gerasimov 7-5 7-5 in the last four.
Qualifier Gerasimov was competitive but unable to repeat his quarter-final upset of No.3 seed Matteo Berrettini.
Medvedev made the decisive break late in each set and dropped serve just once in the 90-minute match, the Russian reaching his eighth final of 2019 as a result.
He is the first player since Novak Djokovic at the end of 2018 to reach the final in five consecutive tournaments played.
No.1 seed Medvedev will meet Coric after the Croatian came from behind to defeat Joao Sousa 3-6 7-6 (7-5) 6-1.
Coric, seeded No.4, has won all of his three matches this week in a deciding set to reach a sixth career ATP Tour final.
Sousa lost a contest lasting two hours and 16 minutes despite saving 14 of 17 break points. A tense second-set tie-break, which was level at 5-5 before Coric won two straight points, ultimately proved decisive.
Coric holds a 4-1 head-to-head advantage over Medvedev, who is looking to become the first Russian to win in St Petersburg since Mikhail Youzhny 15 years ago.
At the Moselle Open, Aljaz Bedene will meet Jo-Wilfried Tsonga in the final.
World No.76 Bedene reached his first ATP Tour final of the year after disappointing the home fans in Metz with an upset 4-6 6-1 6-2 win over France's Benoit Paire.
But the home support will have Tsonga to get behind on Monday (AEST) after he overcame fellow Frenchman Lucas Pouille 7-6 (8-6) 7-6 (7-4).
Both players dominated on serve, with Pouille failing to convert the solitary break-point opportunity of the match while leading 6-5 in the first set, as Tsonga reached his fifth Moselle Open final.