The Six Nations Grand Slam winners, who booked their place in the final four following wins over Japan and Scotland as well as picking up a losing bonus point against New Zealand on Saturday, forced the tournament favourites to give everything they had to earn their place in the final as England matched the Springboks in every area.
England will now face Australia in the third and fourth place play-offs on Sunday April 17 after the Wallabies' earlier penalty shoot-out defeat to New Zealand. They drew 25-25 but lost out when the All Blacks converted four successful penalty kicks to Australia's three.
Bath hooker Chris Brooker came close to taking the first points of the afternoon after an impressive England attack 15 minutes into the game. Following an England line-out catch and drive on the Baby Boks' five metre line, the young forward muscled his way over the try-line only for opposite number Mahlastse Ralepee to hold him up.
South Africa tried to break their duck with a drop goal, but fly-half Jody Rose missed, and 23 minutes into the game the tension continued to mount with referee Chris Pollock consulting the Television Match Official for confirmation of a try by JC Janse van Rensburg. Fly-half Jody Rose made the initial break, but stumbled just before the try-line with van Rensburg picking up to break through England's defence. Pollock gave the score and with Rose striking the conversion and a later penalty South Africa went 10-0 up.
An injury to London Wasps fly-half Daniel Cipriani halted the game for five minutes, but Tosh Askew's young guns retained their composure and were soon rewarded for their efforts when, following a great break by England centre Tom Youngs, Brooker crashed over for a try.
In an almost identical move to the score he was earlier disallowed Brooker muscled his way over the line following a line-out, catch and drive. Lamb missed the conversion and a later penalty leaving England 10-5 adrift at the break.
Another missed opportunity went astray for England early in the second-half with Lamb missing a shot at goal before he too took a heavy knock and was substituted off for London Irish's Dominic Shabbo.
England's plight deepened in the 63rd minute when Springbok sub Shandre Frolick broke loose to score on his first touch of the ball after just 30 seconds on the field. Rose again added the conversion to take the host nation 17-5 up but in true England style the determined outfit closed the deficit further when Bath's Nick Abendanon's crossed in injury time. Captain Jordan Crane converted the try, but the score came too late with England having to settle for a 12-17 defeat.
Head coach Tosh Askew said: "The defeat is massively disappointing and we are gutted to have gone out at this stage. We stood up to be counted and the guys can be proud of themselves.
"We were disrupted by some injuries and that put us on the back-foot a little, but everyone who came on did fantastically well. What we have learned is that Southern hemisphere sides are just more physical than us and that is something we have got to address.
"We now have another game to play in the play-offs and we are determined to finish third. If we do that it will be another improvement on last year. "
15 Shane Geraghty (London Irish), 14 Nick Abendanon (Bath), 13 Anthony Allen (Gloucester), 12 Tom Youngs (Leicester Tigers), 11 David Doherty (Leeds Tykes), 10 Daniel Cipriani (London Wasps), 9 Ryan Lamb (Gloucester), 1 Dylan Hartley (Worcester), 2 Chris Brooker (Bath), 3 Tom Mercey (Saracens), 4 James Inglis (NEC Harlequins), 5 Alex Rae (Worcester), 6 Andrew Boyde (Leeds Tykes), 7 Donald Barrell (Saracens), 8 Jordan Crane (Leeds Tykes) Captain.
Replacements: Rob Webber (Leeds Tykes), Alex Rogers (NEC Harlequins), Kevin Davis (Leicester Tigers), Mike Myerscough (Bath), Marc Howgate (Leicester Tigers), Adam Powell (Saracens), Derry Coughlan (London Irish), Dominic Shabbo (London Irish), Dominic Waldouck (London Wasps), Alex Wright (Leicester Tigers), David Tait (Sale Sharks).
Substitutions: Coughlan on for Cipriani, Shabbo on for Lamb,
Tries: Brooker, Abendanon
South Africa U19s:
15. Francois Steyn, 14. Luvuyo Mhlobiso, 13. PJ Vermeulen, 12. Jowayne van Wyk, 11. Randall April, 10. Jody Rose, 9. Warren Malgas, 8. Pieter Myburgh, 7. Hilton Lobberts, 6. Richardt Strauss, 5. Alistair Hargreaves (captain), 4. Joe Snyman, 3. JC Strauss, 2. Mahlatse Ralepelle, 1. JC Janse van Rensburg.
Replacements: 16. Deon Fourie, 17. Zander de Kock, 18. Jan Volschenk, 19. Hendrik van Niekerk, 20. Manie Lewis, 21. Yssel Swanepoel, 22. Ricardo Croy, 23. Shandre Frolick, 24. Francois Uys, 25. Jerome Williams, 26. Andisa Nkubi.
Tries: JC Janse van Rensburg, Shandre Frolick.
Cons: Jody Rose 2
Pens: Jody Rose
Referee: Chris Pollock (NZ)