During Sunday's final round at the fog-plagued event, the 19-year-old McIlroy shot 2-under-par 70 to finish with a 72-hole total of 19-under 269, one stroke better than South Africa native Justin Rose (67).
World No. 7 Henrik Stenson (67) of Sweden took third place at 17-under 271.
The third round was completed on Sunday morning, when McIlroy supplanted clubhouse leader Thomas Levet of France.
"You see guys coming down the stretch with a four-or-five-shot lead, and you think it's easy, but it's not," McIlroy told reporters after becoming the seventh-youngest winner in European Tour history. "You still have to hole the putts."
After building the five-shot lead, he bogeyed 15, 16 and 17, while Rose birdied the 17th.
Later, Rose missed a 15-foot birdie putt at 18 and lost a chance to force a playoff.