Media playback is not supported on this device
GB's Abbie Brown opened the scoring after just 15 seconds before Fiji's Litia Naiqato finished off a stunning team move to level.
But Alice Richardson and Joanne Watmore gave Team GB a 19-7 half-time lead, and Brown sealed the win with her second.
Australia and Canada will play in the second semi-final on Monday.
Great Britain earlier beat a strong Canada side 22-0 in their final group game.
Find out how to get into rugby union with our special guide.
And Brown said that Sunday's improvement came because the team had "settled" after feeling nerves on the first day.
"It is an Olympics, the nerves are going to hit," she said.
"We have shown everyone today with Canada and Fiji, we have done ourselves justice."
Britain's semi-final will get underway at 19:00 BST on Monday, with the final following at 23:00.
Day-by-day guide to what's on
Media playback is not supported on this device
Great Britain women will face New Zealand in the semi-finals of the Olympic rugby sevens after beating Fiji 26-7 in the last eight at Rio 2016.