After an edgy opening in which Billy Burns and Jack Maynard exchanged penalties, Leicester centre Javiah Pohe got the first try as he danced his way over the line. Billy Burns conversion made it 10-3.
Up against the country his father Paul represented, Ross Moriarty grabbed England's second try off the back of a lineout take from Maro Itoje, Burns' extras stretching the lead to 14.
However the Welsh fought their way back into it just after the break with a try from their skipper Ben Roach, and having already knocked over another penalty, Maynard added the conversion to make it 17-13.
With a quarter of an hour remaining England made the game safe as Scott Wilson barged his way over the line to seal the win.
Moriarty said afterwards: "I'm really happy to get the win both from a personal point of view and for the team. We worked really hard today, it might not have been the prettiest but we got the job done. I spoke to my dad after the match and he was chuffed - we just can't wait for the final now."
If England were made to work hard by the Welsh, it was no easier for the Irish who eventually saw off France 22-20.
The French took an early lead through two Thomas Bouyxou penalties, before Conor McKeon got one back for Ireland.
The momentum began to swing towards the Irish and they duly scored the first try of the game as winger Gregory O'Shea darted over, McKeon converting for 10-6.
However France were not done there and turned things around before the break when winger Gael Fickou showed great pace and footwork to go over and put Les Bleus back in front.
After the break it was the Irish who made the quicker start and O'Shea grabbed his second try before Sebastien Dimitri put France back in front with another try.
But Ireland were not willing to give up the crown they won last year and prop Charlie Slowey went over after some concerted pressure before Baptiste Serin missed a late chance to win it for France.
Elsewhere Scotland set up a clash with Georgia for fifth place as they saw off Portugal in comprehensive fashion 37-12.
In Saturday's game they will take on Georgia who caused an upset as they sneaked past Italy 20-18.