Hasan Ali (3/35) took three wickets, while Junaid Khan (2/42) and debutant Rumman Raees (2/44) snapped up two each.
Young spinner Shadab Khan (1/40) scalped one wicket, while Imad Wasim (0/16) and Mohammad Hafeez (0/33) also bowled well.
England rode on useful contributions from top-order batsmen -- Joe Root (46), Jonny Bairstow (43) and Eoin Morgan (33) -- but they kept losing wicket at regular intervals due to sustained pressure created by Pakistan bowlers.
In the end, it was all-rounder Ben Stokes' 34, which helped England cross the 200-mark.
England were dealt an early blow when Hales was sent back by Raees with Babar Azam taking the catch in the sixth over.
Bairstow, who was brought in the playing XI in place of Jason Roy, and Root helped England reach fifty in 9.4 overs.
However, Bairstow top-edged a Hasan Ali ball that was easily taken by Hafeez at deep square leg as England slipped to 80 for two.
Skipper Morgan then joined Root and the duo batted with purpose to bring up the hundred in 21.4 overs. The 48-run stand for the third wicket was broken by 18-year-old spinner, Shadab Khan, in the 28th over.
Looking to cut the ball, Root nicked it to wicketkeeper Sarfraz Khan, as England were reduced to 128 for three.
Morgan, too, perished in the 32nd over - while looking to belt it down the ground he ended up giving a thin edge to the keeper.
Seamer Junaid Khan then struck successive blows, dismissing Jos Butler (4) and Moeen Ali (11) in the 35th and 39th over, respectively, as England slumped to 162 for six.
Adil Rashid was back to the hut after a direct hit from substitute Ahmed Shehzad at the non-striker's end.
England's hero in their last match against Australia, Stokes held on for sometime and it was his 64-ball innings, which gave the home team's total a semblance of respectability.