Britain, beaten at the semi-final stage in Rio five years ago, fell behind early.
France made a blistering start, moving 14 points clear through converted tries from Anne-Cecile Ciofani and Seraphine Okemba, before Jasmine Joyce claimed her sixth try of the tournament and Holly Aitchison added the extras.
Coralie Bertrand claimed a third French touchdown before the break, but Joyce then sprinted clear for her second try, making it 21-12 at half-time.
Ciofani scored a second, before a Hannah Smith score converted by Natasha Hunt set up a tense finale, but France held on.
We can't have any complaints," coach Scott Forrest said. "We didn't play well and were far from our best.
"The easy thing would be we start to drift apart as a group, but we have got a big opportunity to go and win a medal, so this should bring us closer together.
“We have got one more opportunity as a team at the end of this programme, and all of us want to go out and show what we can do. I think the players are resilient enough to deal with that.
"I am confident the group can bounce back from it, but we have to be at our best if we are to have any chance of winning it. Fiji have been absolutely outstanding in this tournament."
France will play New Zealand in the final.