England ended Wales' 14-match winning run as Eddie Jones' relatively inexperienced side beat the world number two team in their first World Cup warm-up match at Twickenham.
An energetic start from England saw Billy Vunipola and Joe Cokanasiga score from close range, before a solo effort from Wales scrum-half Gareth Davies got the visitors back in the game.
Luke Cowan-Dickie then scored his first England try to give his side a 14-point lead before half-time.
George North and Wyn Jones kicked off a second-half comeback for Wales with a try each, but it was not enough to earn them a first win at Twickenham since 2015.
Wales travelled to south-west London as favourites, bidding to become world number ones after New Zealand's loss to Australia on Saturday.
But Warren Gatland's side looked as if they might have been working too hard in their training camps in Cardiff and Switzerland, crouching down and looking breathless whenever there was a break in play.
The visitors brought a strong side to Twickenham, but were undone by an England team which looked eager to impress before head coach Jones names his 31-man World Cup squad on Monday.
Playing for a World Cup place
While many of those starting for Wales will almost certainly be on the plane, England's players had to prove their worth to get to Japan.
England flanker Tom Curry and winger Anthony Watson made their presence known early, making breaks to get inside Wales' 22, and Vunipola managed to wrestle the ball down with Wales defenders hanging off him after just three minutes.
It was not just World Cup spots being played for, though. Any questions about whether this warm-up would have the usual intensity of an England v Wales game were soon settled when a fight broke out at the scrum shortly after the hosts' score.
England debutant Willi Heinz then had a dart to within a metre of the try-line, but it was Cokanasiga who picked up the ball from the back of the ruck and drove over.
But the hosts' level began to drop and Wales suddenly picked up as Davies shot round a scrum and left Elliot Daly lying on the floor, side-stepping the full-back to score at the same end where he went over for a crucial try against England in the 2015 World Cup.
A mistake from experienced forward Ken Owens allowed England to turn the tables again, though. Owens threw his line-out long and England hooker Cowan-Dickie was on the end of it, diving over before half-time.
Wales continued to build pressure in the second half as North grabbed the ball off the floor after a maul and darted through defenders to score.
Centre Hadleigh Parkes then cut an impressive line and Wales built through the phases inside the five-metre line, allowing Jones to cut the deficit to five points.
But three penalties from fly-half George Ford, who did not miss a kick all afternoon, and a Daly drop-goal gave England the 14-point lead with which they finished the game.
World Cup injury concerns
England head coach Jones had already been forced into three changes the day before the match, with flanker Sam Underhill, centre Henry Slade and wing Ruaridh McConnochie withdrawing from the starting XV because of injury.
And England's back-row issues worsened when Curry, originally selected at blind-side flanker but who started in place of Underhill on the open-side, left the field injured after 28 minutes with an injury to his right arm.
But flanker Lewis Ludlam, who has made only 25 Premiership appearances for Northampton, made an impressive England debut and may have earned himself an unexpected place in the squad.
Shortly after Curry's departure, Wales were also dealt a blow as fly-half Gareth Anscombe was helped off the pitch supported by two physios after going down with a knee injury.
The number 10 was replaced by Dan Biggar, but Warren Gatland will want to take both players to Japan and will not have been happy to see Anscombe return to the bench on crutches.
Man of the match - Anthony Watson (England)
'All you have to do is worry about yourself' - What they said
England coach Eddie Jones: "We had a good team out there, a good mix of young guys, guys who haven't played for a while and I knew their attitude would be right. I was pleased for the young guys playing today. It's a special moment for those guys.
"Wales had a lot of expectation to cope with. I thought that would weigh them down and in the end it probably did.
"These are tough games, we don't know what sort of work Wales have been doing - we might be at different stages of our preparation. All you have to do is worry about yourself."
Wales coach Warren Gatland: "It's all about what happens in the middle of September, it's what we are building for.
"Everyone's writing off the All Blacks, but you do at your peril. England probably have a few more headaches than we do. It looked like a pre-season game for us and we will definitely be better next week."
England: Daly, Cokanasiga, Joseph, Francis, Watson, Ford, Heinz, Genge, Cowan-Dickie, Cole, Launchbury, Ewels, Ludlam, T. Curry, B. Vunipola.
Replacements: Tuilagi for Francis (74), Youngs for Heinz (50), H. Williams for Cole (53), Singleton for Launchbury (79), Kruis for Ludlam (69), Lawes for T. Curry (29). Not Used: Marler, Marchant.
Wales: L. Williams, North, J. Davies, Parkes, Adams, Anscombe, G. Davies, Smith, Owens, Francis, Beard, A. Jones, Wainwright, Tipuric, Moriarty.
Replacements: Watkin for Parkes (68), Biggar for Anscombe (34), A. Davies for G. Davies (53), W. Jones for Smith (50), Dee for Owens (52), Lewis for Francis (50), Ball for Beard (68), Shingler for Tipuric (62).