Defending champion Mannarino had won eight straight matches at the ATP 250 event, which was last held in 2019, but he fell 7-5 7-5 to Medvedev in a match lasting a little less than two hours.
No.1 seed Medvedev, whose most recent appearance in a final came at the Australian Open in January, will now face home favourite Tim van Rijthoven on Monday (AEST).
"Adrian plays good, and some games in this match I was like: okay, I can't do anything," Medvedev, who will reclaim top spot in the ATP rankings next week, said.
"I had to just continue playing my tennis. He was unbelievable sometimes, missing sometimes, so I just continued my game, and it managed to work today."
Medvedev was far from his best against flat-hitting Mannarino, with the first set featuring five breaks of serve, but the 26-year-old did enough to edge in front.
After wasting a chance to serve out the match in the 10th game of the second set, Medvedev edged a mammoth 11th game and avoided any sort of scare to advance through.
The Russian will next face a different sort of test against Van Rijthoven after the Dutch wildcard stunned No.2 seed Felix Auger-Aliassime.
Van Rijthoven, who had not won a match at tour level until his opening-round win over Matthew Ebden, prevailed 6-3 1-6 7-6 (7-5) in a thrilling semi-final.
After sharing the first two sets, Van Rijthoven wasted six break-point opportunities in the decider, but he held his nerve in the tie-break to keep his dream run going.
He is the first Dutchman to reach the final in 's-Hertogenbosch since Raemon Sluiter in 2009.