McIlroy, bidding to top the tour for the third time in four years, carded consecutive 68s to be at 8-under-par 136, four off Andy Sullivan's lead in the DP World Tour Championship.
On a day when most players went low, McIlroy could only match his opening round, including five birdies, and one bogey on the par-3 6th. He birdied only one of the four par 5s at Jumeirah Golf Estates.
''Two solid rounds of golf so far,'' McIlroy said. ''I felt like yesterday it could have been a lot better. And today, I felt like I hit the ball a little better. It wasn't quite as scrappy.
''I don't think I've taken advantage of the par 5s quite the way I would have liked to, but if I can do that over the next couple of days, and keep giving myself plenty of chances, I should be close on Sunday.''
Meanwhile, Willett, tied with McIlroy in the first round, shot a 2-under 70. The Englishman started well with birdies on Nos. 2-3, but bogeyed No. 5, and No. 16 immediately after a birdie on 15. He needed to hole a 15-footer for par on the last and keep his hopes alive.
Sullivan shot a second straight 66 to be at 12-under 132 for a one-shot lead over the equally in-form Emiliano Grillo, who posted the low round of the day, a bogey-free 8-under 64.
Sullivan has won three European Tour events this season – South African Open, Joburg Open, Portugal Masters – and was being cheered on here by 30 friends and relatives who have travelled from his hometown of Nuneaton, England.
He treated them to some stunning putts; a 50-footer for birdie on the 12th, one from nearly 30 feet on the 14th, and a 40-fooer from behind the 18th green.
''The putter just seemed to get crazy hot from the one on the 12th hole, and everything I looked at, pretty much went in,'' Sullivan said. ''It's a nice feeling.''
Grillo started and finished with birdies to reach 11 under overall. He hasn't won on the Euorpean Tour, but won the Frys.com Open, the first tournament of the new PGA Tour season last month, two weeks after he secured his card by winning the Web.com Tour Championship.
Two behind the Argentine was Patrick Reed, who birdied five of his last six holes to close with a 65.
Two-time defending champion Henrik Stenson closed with a 69 to be 2 over for the tournament. At one stage, after six holes, the Swede was 9 over before making seven birdies in his last 12 holes.