Former French Open champion Ostapenko, now 43rd in the world rankings, struck 38 winners against Kazakhstan's Rybakina, who appeared to be hindered late in the first set by a back problem.
World number 21 Rybakina required medical treatment after holding serve to trail 5-4 and Ostapenka went on to dominate the second set.
Kontaveit, the world number 27, progressed to her eighth career final after Italy's Camila Giorgi was forced to retire due to a thigh injury when trailing 5-4 in the first set.
Giorgi ousted top seed Aryna Sabalenka in the quarter-finals on Thursday but paid for her exertions in that match as she lasted just 47 minutes before having to pull out.
Italy's Lorenzo Sonego and Australia's Alex De Minaur will contest the men's final on Saturday.
Third seed Sonego stayed on course for his second grass-court title with a 6-1, 3-6, 6-1 semi-final win against lucky loser Max Purcell.
The big-serving world number 27, who won the Antalya Open in Turkey on grass in 2019, hit five aces against world number 283 Purcell, who needed back treatment at the end of the first set.
Purcell, 23, hit back to take the second set, but Sonego regained control in the decider to complete victory in one hour and 38 minutes.
"I like the conditions here because I can go to the net," Sonego said. "I am serving well, I am more offensive, and I want to do the same tomorrow."
Second seed De Minaur has yet to drop a set after beating Soonwoo Kwon, of South Korea, 6-3 7-6 (2) in one hour and 21 minutes.
De Minaur, at a career-high 18 in the world rankings, is bidding for his fifth ATP Tour title and first on grass.
"I am playing some great tennis on the grass. I am really enjoying myself out there and hopefully I can play well tomorrow and take it home," De Minaur said.
"I think for me, the clay season is a long stint, so I was looking forward to the grass season. I have gained confidence from every match I have won, and I have had a lot of matches under my belt. All these things help each other."