Tries from backs Jack Nowell and Sam Hill reduced the deficit in the second period and fly-half Henry Slade kicked the points that put some daylight between the teams.
Head coach Nick Walshe said: "I'm absolutely delighted. The lads did it the hard way but we showed real character in the second half and it's amazing to get the win.
"We put a strong emphasis on performance, and in the second 40 we delivered.
"These guys have worked so hard, not only over the past few weeks, but over the course of the season, and they deserve their win."
Tigers second-rower Price started the Final and was replaced by club colleague Wells with just over 10 minutes remaining, while wing Purdy was also used as a second-half replacement.
Price touched down for England in the last attack of the first half, only for the Television Match Official to rule foul play in the build-up to the score which not only saw the try disallowed by also a yellow card awarded for Dominic Barrow as Wales cleared their lines with a penalty.
England Under-20s (v Wales)
15 Jack Nowell (Exeter Chiefs)
14 Anthony Watson (Bath Rugby)
13 Harry Sloan (Harlequins)
12 Sam Hill (Exeter Chiefs)
11 Ben Howard (Worcester Warriors)
10 Henry Slade (Exeter Chiefs)
9 Alex Day (Northampton Saints)
1 Alec Hepburn (London Wasps)
2 Luke Cowan-Dickie (Exeter Chiefs)
3 Scott Wilson (Newcastle Falcons)
4 Tom Price (Leicester Tigers)
5 Dominic Barrow (Leeds Carnegie)
6 Ross Moriarty (Gloucester Rugby)
7 Matt Hankin (Saracens)
Jack Clifford (Harlequins) (c)
16 Scott Spurling (Saracens) for Hankin 69 mins
17 Danny Hobbs-Awoyemi (Northampton Saints) for Hepburn 55 mins
18 Tom Smallbone (London Irish)
19 Harry Wells (Leicester Tigers) for Price 69 mins
20 David Sisi (Bath Rugby) for Moriarty 47 mins
21 Callum Braley (Bristol Rugby) for Day 52 mins
22 Ollie Devoto (Bath Rugby) for Howard 56 mins
23 Henry Purdy (Leicester Tigers) for Sloan 67 mins