Willett fired six birdies and an eagle to finish 16 under par, one ahead of halfway leader Rafael Cabrera-Bello, of Spain, who returned a third straight 67.
England's Andy Sullivan, who double-bogeyed his first hole of the week but has not dropped a shot since, was a shot further back after a flawless 66, with Holland's Joost Luiten on 13 under.
Matt Fitzpatrick, also from Sheffield, shot a four-under-par 68 and is tied 42nd while Malton's Simon Dyson, still feeling his way back after injury, is tied 67th after a 76.
"I think mentally I feel like I'm very much in control of myself, which obviously helps," said world No 20 Willett, who holed from 40 feet for an eagle on the 13th, the same hole where his approach bounced out of a lake to set up an unlikely birdie on Thursday.
"I'm trying to keep it as simple as possible and let the mind be a little bit calmer, and it seems to be working so far.
"I played great golf today. Played really good on Friday and kept the foot down and could have been a couple better today in all fairness, but delighted.
"It would be nice to win every single event that we play over the span of your career, but this would be special."
Cabrera-Bello had enjoyed a two-shot lead when he holed a bunker shot on the third for eagle and birdied the fourth, but the Spaniard was fortunate to escape with a bogey on the seventh after a collar of rough prevented his tee shot from rolling into the water.
The 31-year-old bounced back with birdies on the ninth and 10th and recovered from another dropped shot on the 12th with two further birdies to boost his chances of a first victory since lifting the trophy in 2012.
Sullivan drove out of bounds on his opening hole on Thursday, but has played the next 53 in 16 under as he looks to build on a brilliant 2015, when he won three times on the European Tour and pushed Rory McIlroy all the way in the season-ending DP World Tour Championship.
McIlroy began the day six shots off the lead and looked to have blown his chances of a record-equalling third victory with a front nine of 37, including a double-bogey six on the ninth.
However, for the second day running the world No 2 - who was outside the projected cut after 11 holes on Friday - salvaged his round on the back nine, covering it in 31 with six birdies to card a 68 and finish eight under par.
Three-time winner Ernie Els was a shot off the lead at the start of the day, but ended it nine behind after struggling to a 74 which equalled his worst score in 55 rounds in this event.
Fitzpatrick had one birdie, at the fourth, and eight pars on his way out then birdied three of the first four holes on the back nine and parred his way in from there.
Dyson recovered from a stumble at the first with birdies at three and four, but after seven successive pars he bogeyed 12 and then dropped shots at all four of the closing holes.