The birdie finished off an up-and-down round, which included five birdies and three bogeys, for McIlroy. The 2-under-par 70 left him at 11-under 133 after 36 holes.
Brooks Koepka posted a bogey-free 7-under 65 in moving into second place at 10-under.
Danny Willett, who had five birdies in a six-hole span, also shot 65 in the second round and is tied with Damien McGrane and Julien Quesne for third at 8-under. McGrane and Quesne were both 2-under for the second round.
Defending champion Stephen Gallacher, after a 71 Friday, is in a group tied for sixth at 7-under.
Tiger Woods had just two birdies in a 1-over 73 and slipped into a tie for 44th, eight strokes behind McIlroy and just two strokes above the cut line.
McIlroy fought through a shaky day off the tee, an issue that led to a bogey at the first hole. He recovered with three birdies on the rest of the front side and got to 3-under for the day with a birdie at No. 10. But he gave back strokes at Nos. 13 -- a par 5 -- and 16 before putting up a 4 at the par-5, 564-yard finishing hole.