Middlesex's hopes of a first County Championship title since 1993 suffered a potentially fatal blow as Somerset claimed 12 wickets on day two at Lord's.
Having posted 449 - their highest score away from Taunton this season - Somerset skittled their third-placed Division One rivals for 106 in 37.5 overs. Following on, Middlesex reached stumps on 52-2.
Craig Meschede claimed 3-25 while there were also three wickets for leg-spinner Piyush Chawla, who had earlier completed his fourth first-class hundred.
The India international resumed on 58 not out and helped add 127 runs in a first session that saw Middlesex fail to take a wicket.
He his first century of the summer in only his third innings for Somerset in grand manner by advancing down the pitch to hoist one from Ravi Patel into the Mound Stand for his fourth maximum.
Alfonso Thomas (54 not out) helped add 98 for the ninth wicket to help secure a crucial fourth batting bonus point before Patel wrapped up the innings after lunch, givnig him final figures of 4-89.
Middlesex lost seven wickets for 44 runs inside 15 overs of a dramatic mid-session, Chris Rogers making just eight on his return to county action after the Ashes series.
Meschede claimed two wickets in as many balls, sending back both Sam Robson and Neil Dexter, before Chawla worked his way through the tail, taking 3-8 ni just 4.5 overs.
Asked to have another go, Middlesex saw Rogers (two) depart for a second time in the afternoon, leg before to a Lewis Gregory yorker, and Joe Denly (13) soon followed, steering one from Meschede to second slip.