Any lingering hopes of Middlesex securing their first County Championship title since 1993 appeared to be snuffed out at Lord's as Somerset bagged 12 wickets inside two sessions to take a stranglehold on their Division One match.
Having been dismissed for 106 inside 38 overs and made to follow-on 343 in arrears, third-placed Middlesex limped to 52 for two second time around and trail by 291 going into day three.
Responding to Somerset's 449 all out - their best total on the road this season - Middlesex lost seven wickets for 44 runs inside 15 overs of a dramatic mid-session against a visiting side battling for top-flight survival.
Australia's Ashes opener Chris Rogers departed in the third over to a catch at third slip after a leaden-footed drive at one going across him from England prospect Jamie Overton.
Joe Denly's miserable run of form continued when he pushed one off his hip from Lewis Gregory to be caught at square-leg, then Sam Robson edged Craig Meschede's loosener through to the wicketkeeper when cutting too close to the body.
Meschede's next ball, a quick yorker, plucked out Neil Dexter's off stump to make it 36 for four, but the hat-trick delivery was sprayed wastefully down the leg-side.
Poor shot selection accounted for John Simpson as the left-hander drove hard at a wide one from Gregory to be pouched low down at third slip by Nick Compton.
Meschede bagged a third scalp by enticing left-hander Dawid Malan to follow one angled across him and feather it to the keeper, before Alfonso Thomas got in on the act trapping Gareth Berg lbw to send Middlesex in for tea on 61 for seven.
Ollie Rayner, with 34 not out, and James Harris arrested the slide in a stand of 49 before the latter prodded at a Piyush Chawla top-spinner to depart leg-before.
Chawla soon pegged back Tim Murtagh's off stump and had Ravi Patel caught behind to see Middlesex batting again by 5.30pm.
Rogers departed for a second time in the day, lbw to a Gregory yorker, and Denly soon followed, steering one from Meschede to second slip.
The hosts’ miserable second day started when Somerset - eight down overnight - batted throughout a wicketless first session to add 127 to their overnight score.
Chawla brought up his first century of the summer, in only his third innings for Somerset, by advancing down the pitch to hoist one from Patel into the Mound Stand for the fourth maximum of his 139-ball innings.
In tandem with Thomas, Chawla added 98 for the ninth wicket - a record for this fixture and for Somerset against Middlesex, beating 91 by Samuel Woods and Gerald Fowler at Lord's in 1901.
The visitors also plundered a crucial fourth batting bonus point before they were finally dismissed soon after lunch by Patel, who finished with 4-89.
Chawla went for 112, miscuing a lofted drive to long-off, and last man Overton fell lbw to the same bowler, leaving Thomas unbeaten on 54.