Harmison took six for 19 in just 13 overs as Pakistan were bundled out for 119, only three batsmen making double figures.
At stumps, England were 168 for two, a lead of 49, with Alastair Cook 65 not out and Kevin Pietersen 38 not out, their unbroken stand currently worth 73.
Durham quick Harmison made the most of a hard pitch ideally suited for a bowler of his height and bounce.
His figures were his best in Test cricket since his seven for 12 against West Indies in Jamaica two years ago, Harmison giving England's attack the lead it required in the ongoing absence of injured paceman Andrew Flintoff who also missed the drawn first Test at Lord's.
And left-arm spinner Monty Panesar (three for 21 in 7.4 overs), who bowled with control and turn, ensured there was pressure from both ends after Pakistan captain Inzamam-ul-Haq won the toss and elected to bat in the second match of this four-Test series.
"It was a tall bowlers wicket and me and 'Saj' (Mahmood) got a bit of bounce out of it. We went about our task pretty well and I feel as though I hit the deck well," said Harmison.
"I didn't think the pitch had as much pace as some people have said it has, but it bounced and that's what we've been crying out for. It's hard to get in and I didn't give them an inch and kept on top of them.
"Monty bowled well from the other end and the lads fielded well and held their catches. I don't think we could have had a better day."
Pakistan's Younis Khan, who topped-scored with 44, said they were surprised by the pitch.
"In the first two sessions it was very dodgy, but I think if England had won the toss they would have done the same as us," said Younis.
"It was a turning point when myself and Mohammad Yousuf (38) got out. After that we just collapsed."
Pakistan, who were without their three leading fast bowlers (Shoaib Akhtar, Mohammad Asif and Rana Naved-ul-Hasan) through injury, had no-one to match the pace of the 27-year-old Harmison, who routinely topped 85mph.
Their seamers had far less margin for error and when they did stray off line Cook made them pay on his way to a 93-ball fifty with seven fours.
Earlier Pakistan, who had been 90 for two, lost their last eight wickets for just 29 runs in 85 balls.
But Harmison was helped by a series of loose shots.
Pakistan, 93 for four at lunch, lost their fifth wicket five balls after the resumption.
Faisal Iqbal fell for three when he was caught behind by wicket-keeper Geraint Jones off Panesar.
England then captured the prize wicket of Inzamam, who had made nine successive Test fifties against them, for nought, when he could only steer a rising Harmison delivery to Kevin Pietersen in the gully.
Shahid Afridi briefly threatened, lofting Panesar for six. But two balls later, trying to repeat the shot, he wastefully skied a simple catch to Pietersen in the covers.
Harmison then had Sami caught by Strauss in the slips before clean bowling Abdul Razzaq middle-and-leg stump.
Pakistan's demise was completed with the run-out of Danish Kaneria for the third nought of the innings, the tourists dismissed in under 39 overs.
In reply England saw Marcus Trescothick (five) caught behind after limply hanging his bat out against Mohammad Sami before captain Andrew Strauss, dropped in the slips by Imran Farhat on five, fell in similar fashion to Razzaq for 42.
Harmison had earlier taken two wickets for no runs in eight balls as Pakistan, with wicket-keeper Kamran Akmal promoted to open in place of the dropped Salman Butt, again failed to fire at the top of their order and collapsed to nine for two.
Only Yousuf (38), who made a double century at Lord's, and vice-captain Younis Khan (44), fit again after a knee injury, checked England's progress with a third-wicket stand of 81 after the hosts' back-up seamers were unable to build on the start provided by Harmison and Matthew Hoggard.
But shortly before lunch Yousuf was caught behind off the accurate Panesar's fourth ball and, three balls later, Younis was taken by Paul Collingwood in the gully off a steepling Harmison delivery.
Pakistan 1st Innings:
Fall of wickets: 1-4, 2-9, 3-90, 4-90, 5-93, 6-93, 7-112
8-113, 9-118, 10-119
England 1st Innings
Fall of wickets: 1-30, 2-95
To bat: P Collingwood, I Bell, G Jones, S Mahmood, M Hoggard, S Harmison, M Panesar
Umpires: Steve Bucknor (WIS), Simon Taufel (AUS), TV umpire: Ian Gould (ENG)
Match referee: Ranjan Madugalle (SRI)