England led 19-12 at half-time of the game in Rosario, Argentina through tries by London Irish wing Marcus Watson, Gloucester fly half Freddie Burns and Harlequins prop Joe Marler, with Burns converting twice.
But England, who included Tigers youngsters Calum Green and Sam Harrison in the starting XV, only added a penalty in the second half as South Africa staged a fight-back after the break.
Head coach Mark Mapletoft said: “The boys are more disappointed than anyone of course, because they wanted a bronze medal.”
New Zealand beat Australia 62-17 to win the tournament for the third year in a row.
England U20
15 Tom Homer (London Irish)
14 Christian Wade (London Wasps)
13 Jonny May (Gloucester)
12 Tom Casson (Harlequins)
11 Marcus Watson (London Irish)
10 Freddie Burns (Gloucester)
9 Sam Harrison (Leicester Tigers)
1 Joe Marler (Harlequins)
2 Jamie George (Saracens)
3 Mako Vunipola (Bristol)
4 Calum Green (Leicester Tigers)
5 George Kruis (Saracens)
6 Will Welch (Newcastle Falcons)
7 Jacob Rowan (Leeds Carnegie, captain)
8 Jamie Gibson (London Irish)
Replacements
16 Rob Buchanan (Harlequins)
17 Shaun Knight (Gloucester)
18 Charlie Matthews (Harlequins)
19 Alex Gray (Newcastle Falcons)
20 Charlie Davies (Stade Francais)
21 Rory Clegg (Harlequins)
22 Sam Smith (Harlequins)