England will play New Zealand in the World Cup Sevens final after an impressive 29-7 win over South Africa in San Francisco.
They fell behind inside three minutes to the reigning World Sevens Series champions but responded impressively and built a 17-7 interval advantage through tries by Harry Glover, Tom Mitchell and Ruaridh McConnochie, with Mitchell adding one conversion.
England's outstanding work at the breakdown rocked their opponents and a fourth try arrived early in the second period when McConnochie crossed.
South Africa could not get into the game and Dan Norton completed a memorable victory by scoring England's fifth try.
England progress to a decider with holders New Zealand, who beat Fiji 22-17 in the other semi-final.
Joe Ravouvou gave New Zealand the early lead with a try in the corner before Fiji punished poor tackling to hit back through Semi Radradra.
New Zealand's ferocious play at the breakdown reaped its rewards when they were awarded a penalty for an infringement at a ruck, and a quick tap saw the ball spun wide quickly for Dylan Collier who dotted down to make it 10-7.
There was controversy when Fiji were awarded a second try soon afterwards through Amenoni Nasilasila, despite replays appearing to show he had put a foot in touch before scoring.
New Zealand, however, shrugged off the setback and responded with a clinical second-half performance.
Regan Ware darted through a gap for the New Zealanders' third try to make it 15-12, and then another well-worked move sent Ravouvou over in the corner for his second try of the game.
Alasio Naduva scored a late consolation for Fiji.
In the Challenge competition, Ireland beat Wales 27-12 to book a final date with Australia.