England made a strong start after putting Pakistan in as Saqib Mahmood went for just three in the first over before Moeen Ali bowled Fakhar Zaman (1) with his first ball.
That brought Haider to the crease and the teenager was quick to make his mark on the international stage, walloping Moeen into the stands over long on from just his second ball.
Tom Curran castled Babar Azam (21) with a delivery that skidded on but the loss of two early wickets, including the skipper, did not deter Pakistan as Haider and Hafeez showed T20 is a game for all ages, the 19-year-old debutant and 39-year-old veteran proving equally adept at finding – and clearing – the boundary.
Haider was making a mockery of Pakistan’s decision not to include him in the first two games, showing superb power and timing to reach his half-century from just 28 balls – with five boundaries and two sixes to his name.
Meanwhile, Hafeez was getting after England’s strike bowler, bringing up Pakistan’s 100 with back-to-back sixes off Adil Rashid – the leggie, usually so vital for Morgan’s side, finished with figures of 0-40 from three overs.
Hafeez lost his young partner to a superb yorker from Chris Jordan, a hint of reverse swing helping it to tail in and uproot Haider’s off stump but he showed no signs of stopping, hitting four sixes on his way to 50.
The Pakistan No 4 looked imperious and had reached 79 before he first offered a chance – and it was barely that as he drilled the ball into the covers and Morgan dived to get a hand to it in midway, more a boundary-saving stop than a drop.
Shadab Khan went next ball, thumping a full delivery straight to Curran at mid-off to give Jordan a second wicket but the same fielder shelled a high catch next ball off Imad Wasim to deny Jordan a hat-trick chance.
Jordan and Mahmood limited the damage in the last couple of overs to keep Pakistan below 200 but Hafeez had already done enough damage to ensure England required another near-faultless chase.
Losing Jonny Bairstow for a three-ball duck – bowled by Shaheen Afridi’s stunning yorker – was not the start they were after and when Dawid Malan was superbly caught in the deep by Fakhar off Imad, the pressure was really on.
Tom Banton was firing though and raced into the 40s, only to contribute to the crucial wicket of the England captain – a calamitous mix-up ending with Morgan (10) stranded in the middle of the pitch as Sarfaraz Ahmed took off the bails.
The young opener was unable to make amends, his fine knock of 46 from 31 balls ended when he was plumb lbw to Haris Rauf – although Pakistan needed a review to get the decision.
With England in trouble at 69-4, Moeen and Sam Billings rebuilt and put on 57 before, Billings, who struggled to really get going was caught at third man off for 26.
Moeen, after the quietest of quiet series up to this point, though, was flying – nailing four maximums, including a majestic shot on the up over long-off and then three in an over off Shadab on his way to his half-century.
That Shadab over brought the run-rate, which had been starting to get unmanageable, back under control for England and when Lewis Gregory hit Rauf for back-to-back boundaries to end the 17th over, the home side had the edge.
Two more in the next from Moeen put England in an even stronger position, only for Shaheen to clean up Gregory (12) with a slower ball and bring the game back into the balance.
Wahab Riaz then ran out Jordan (1), a fantastic pick up and throw off his own bowling as England tried to sneak a quick single to get Moeen back on strike and when the left-hander miscued a pull shot to give Wahab a return catch, England’s race was all-but run.
With 17 needed from the final over, Rauf kept Curran and Rashid to ones and twos, taking the equation down to 12 from two. Curran launched the first of them over extra cover for six but was unable to repeat the trick as Rauf nailed his wide yorker to seal the win for Pakistan.