The top two have a three-stroke advantage over Justin Rose, Christiaan Bezuidenhout and Shubhankar Sharma, while Rory McIlroy gave the early risers plenty to cheer when he fired a superb 65 to propel himself 40 places up the leaderboard, although he will begin his final round a distant nine shots off the pace.
Rahm gained the early advantage with a two-shot swing at the first, where Willett was unable to get near the green in two from the rough and bogeyed, with Rahm opening with a confident birdie.
Willett bounced back with a birdie at the third and, although he was unable to match Rahm’s four at the fourth, the Englishman regained a share of the lead with birdies at the sixth and seventh.
The top two traded further birdies at the ninth as both turned in 32, and Willett suddenly found himself in the outright lead when Rahm tugged his tee-shot way left of the 10th green, his ball bounding deep into the trees.
The Spaniard had to take his medicine and slipped to 13 under, and both took advantage of the long 12th before Rahm drilled an excellent second to eight feet at the 13th and converted for birdie, with Willett doing well to get up-and-down from over the green.
Willett handed the initiative back to his playing partner when his wayward drive was perilously close to going out of bounds on the left but, after taking a penalty drop for a unplayable lie, he conjured up a magical recovery shot as he threaded his ball through the tree trunks and onto the green.
His ball raced inches past the pin and settled in the rear fringe, from where he two-putted for his second bogey of the round, and Rahm then re-established his two-shot lead when he holed from 15 feet for birdie at the 16th – only to give the shot straight back when he missed from barely three feet for par, having earlier narrowly avoided going out-of-bounds with his pulled second.
The Ryder Cup star then compounded the error with another big pull off the final tee, his ball landing in a bush and forcing him to take a penalty drop before hacking back to the fairway, but he launched a brave second to the heart of the green and celebrated wildly when his 20-foot par putt had just enough pace to drop.
Willett ignored the adventures of his playing partner and closed out his 68 with a six-foot putt for birdie, while Rose would have been frustrated to end the day three behind after he made a mess of the final hole moments after chipping in for eagle at 17.
Rose, who on Friday outlined his determination to win one of his “bucket list” events, stayed within striking distance of the top two with three birdies over the first six holes, while carding only his third bogey of the week at the fifth.
The world no 3 made the same mistake as Rahm at the 10th and was also unable to save par from the trees, and he missed out on a bounce-back birdie at 12 before belatedly getting back to 11 under with a good three at the tough 15th.
Rose then propelled himself firmly back into the reckoning when his powerful second with a fairway-wood at the 17th trickled off to the right of the green, and he chipped in for eagle to get within three of the leader.
But he was inches from pitching into the water at the last after going long with his bold second from the fairway, and the two-time runner-up then needed three to get down as a closing bogey-six took the gloss off his 69.
Bezuidenhout briefly shared the lead on 11 under when he birdied two of the first four holes, but the Andalucia Masters champion did not pick up another shot until the 10th and frittered it away when a poor drive at 13 led to his first bogey of the day.
Get the best prices and book a round at one of 1,700 courses across the UK & Ireland
location Courses View More Courses Locations View More Locations
No results found. Please try another search.
The South African steadied himself with a run of pars before making a nice four at the 17th, and a solid par at 18 completed a 69 for his third sub-70 score of the tournament.
Sharma, whose world ranking has tumbled to 283rd after a disappointing 2019 so far, stormed into the mix when he made his ninth birdie of the day at the penultimate hole, but a fluffed chip from the greenside rough at the last led to his third bogey, which was an unfortunate ending to an otherwise superlative 66.