The man from Lichfield collected only the second European Tour win of his career, following success at last year's Italian Open, beating a stellar field to secure the 347,000 euro first prize.
Rock carded a final round 70 to hold onto top spot, but was put under pressure when driving into the water at the 18th. The 34-year-old kept his nerve though to make certain of a two-putt bogey and top spot.
Rock was playing with former world number one Woods and feels that helped him, saying: "Early on I was very nervous but I hit some good shots and then I began to think, 'why not [go on and win it]?'"
US Open champion McIlroy finished second on 12-under-par, rueing a two-shot penalty he suffered on Saturday, with Woods tied for third along with Graeme McDowell and Thomas Bjorn.
Lee Westwood finish back down the field on -6, with world number one Luke Donald ending the four days 12 shots behind the winner, on one-under-par.