Once again, after their well-chronicled struggles in a 3-0 Test series defeat in the United Arab Emirates last winter, England's batsmen had no answer to the wiles of Saeed Ajmal (four for 14) at the P Sara Oval in Colombo.
But Danny Briggs (three for 15) and Jade Dernbach (three for 14) ensured England kept chipping out wickets - even without the rested Graeme Swann and Tim Bresnan - and eventually restricted Pakistan to 96 for nine.
Awkward bounce, spin and swing were available, and after beating Australia by nine runs on Monday, England sneaked home again to head into the defence of their world title with a perfect two-from-two warm-up record.
Luke Wright top-scored with just 38 as they struggled after choosing to bat first on a tricky surface. The number three managed to operate at just over a run-a-ball, a feat which proved beyond the rest of the top five.
England were unable to gather momentum, wickets falling from the outset against Pakistan's spinners and then in a heap - in the space of eight balls - to go from 106 for five to be all out in the final over.
In Pakistan's reply, Craig Kieswetter missed an obvious stumping chance off only the second ball of the innings from Briggs. But it cost nothing, Mohammad Hafeez swinging the slow left-armer to deep square-leg, where Jonny Bairstow took a neat catch.
Briggs had a second wicket in his third over, drawing Imran Nazir out of his ground and turning the ball past the outside-edge for an easy stumping. Samit Patel replaced Briggs and struck with his first delivery, spinning one back through left-hander Nasir Jamshed's defences.
Broad then outwitted Asad Shafiq with a slower ball, clumped to mid-off, and the England captain had Shahid Afridi caught-behind with some extra bounce soon after. England had successfully narrowed the equation back in their favour, thanks largely to Broad's remarkable economy - he, like Briggs, even bowled a maiden - when the charge should have been on.
The outcome nonetheless remained too close to call until Dernbach had 20 runs to play with in the final over, and managed to concede only four for two more wickets.
The World Cup has already started, with hosts Sri Lanka beating Zimbabwe in Tuesday's opener. England's first match is against Afghanistan on Friday.