Latvia's Ostapenko out-lasted 11th-seeded Croatian veteran Mirjana Lucic-Baroni 6-3, 5-7, 6-4, while Russia's Kasatkina rallied for a 3-6, 6-2, 6-1 win over Germany's Laura Siegemund.
"It's nice. Finally I made the final," Kasatkina said. "Don't know what will happen tomorrow. Never have been in the final. So we will see."
After dropping the opening set, Kasatkina dominated the rest of the match, reeling off one run of nine games before converting her fourth match point after two hours and 20 minutes.
Siegemund took a medical timeout in the third set for treatment on her right thigh and said a pair of lengthy matches took a toll on her.
"I just couldn't move anymore. The week is a long week, and I'm a really fit player but she just started giving me no pace at all," Siegemund said. "I just started to miss here and there like this, my serve started to go down. Very frustrating for me because I was playing really well and it was like someone unplugging my energy."
Ostapenko, who ousted former world number one Caroline Wozniacki in the quarter-finals, will be playing in her third career singles final, having lost in the title matches at Quebec in 2015 and at Doha last year.
Ostapenko survived eight double faults, but converted seven of her 13 break point chances against Lucic-Baroni.
Ostapenko, who like Kasatkina is 19 years old, had to conquer her own emotions to get past Lucic-Baroni after failing to take advantage of her chance to serve out the match in the second set.
Lucic-Baroni produced a welter of winners to break Ostapenko for 5-4 and held on to force the third set.
"I actually was quite emotional in the second set when I was 5-3 up and I couldn't finish the set, but she liked when I was emotional," Ostapenko said. "It kind of gave her confidence till then.
"In the third set I was just trying to be calm because I think it was tougher for her because I didn't show any emotions, and it helped me, so I won the third set."