Middlesex 203 and 55 for 2 (Carse 2-20) need a further 369 runs to beat Durham 252 and 374 (McKinney 184, Higgins 4-79)
Durham need eight wickets to secure promotion back to Division One after Ben McKinney's magnificent 184 reasserted their dominance over Middlesex.
McKinney picked up from where he left off, turning his overnight 115 into 184, his second-highest first-class score, by the time he was dismissed by the final ball of the morning session. Middlesex struck back with the second new ball after lunch before a brief rain delay halted proceedings.
But a gritty 48 from Colin Ackermann then helped Durham set the visitors an imposing target of 424 after they were bowled out for 374, with Ryan Higgins the pick of the Middlesex attack.
Brydon Carse then saw off both Middlesex openers to move Durham closer to promotion, but bad light denied the league leaders the chance to pick up any more wickets.
Durham resumed on 204 for 2, with unbeaten centurion McKinney and Mayank Agarwal the batters at the crease. In the early stages of play, Durham looked to build on their lead of 253 and McKinney added to his boundary tally as he nudged the lead towards 300.
However, Middlesex took two much-needed wickets as Tom Helm got Agarwal caught behind and Higgins removed Graham Clark's off stump to end his short stay at the crease. McKinney soon passed 150 for the second time this season, with Ackermann joining him in the middle.
Their partnership passed fifty with Middlesex in desperate need of a breakthrough, which arrived after a period of tight bowling. McKinney tried to accelerate the scoring off the bowling of Luke Hollman but was caught on the off side.
Durham then lost another wicket after lunch, with Naavya Sharma trapped Ollie Robinson lbw shortly after Middlesex took the second new ball. They then dismissed Kasey Aldridge, with Helm getting his second of the day through an edge to second slip.
The rain then arrived but after a short delay, Ackermann and Carse stretched Durham's lead past 400. Higgins then struck twice, dismissing Carse and Ben Raine in quick succession. Ackermann then fell two runs short of a half-century as he was caught behind off Morgan, bringing Durham's second innings to a close.
Middlesex's second innings nearly got off to a nightmare start as Hollman drove a Raine delivery towards Clark at backward point, but he couldn't cling on to a regulation catch. Durham didn't rue the missed chance for long, as Carse got Hollman caught behind soon after.
Carse struck again when Sam Robson edged straight into the gloves of Robinson behind the stumps. The players then went off for bad light and play was abandoned for the rest of the day, with Durham needing eight wickets to secure promotion, while Middlesex need 369 runs to win.
