Harmer finished with match figures of 14-172, as the county champions lost their last five wickets for 10 runs.
Nick Compton's 120 off 303 balls had helped Middlesex recover from 51-3, putting on 153 with Paul Stirling (55).
But they slumped from 252-5 to 262 all out as Division One leaders Essex won by an innings and 34 runs.
South Africa international Harmer, who returned career-best figures of 14-128 in last week's win over Warwickshire, has now taken 47 wickets in eight matches this season.
Middlesex began the day on 27-0, still needing another 273 runs to avoid an innings defeat, and got off to the worst possible start when Nick Gubbins (16) was caught by Alastair Cook.
Harmer next saw off Stevie Eskinazi (12) who was caught by Varun Chopra at leg slip, diving forward with one hand after Cook had parried the ball at slip, while Dawid Malan soon followed for one.
Compton steadied the ship and completed his first century of the season from 232 balls, but was trapped leg before to become Harmer's 11th wicket of the game and Middlesex subsided.
They lost their last four wickets in 27 balls, sending Essex 29 points clear at the top of the Division One table.
Spinner Simon Harmer took a career-best 9-95 as Essex beat Middlesex with just moments of a dramatic final evening at Chelmsford remaining.