Captain Alastair Cook recorded his highest ever one-day international score as England set Pakistan a target of 261 for victory in Dubai.
Cook struck 137 runs before he was bowled by Saeed Ajmal, who went on to claim five England wickets at a cost of 43 runs.
Shahid Afridi claimed the early wickets of Kevin Pietersen and Jonathan Trott in successive deliveries, but he was unable to claim a hat-trick.
Ravi Bopara made 50 runs before he was stumped, while late knocks from Samit Patel (17) and Graeme Swann (13) pushed England's score to 260-7 from their 50 overs.