The 22-year-old's score was a new tournament record and it allowed him to win by a shot from McIlroy, who also had a 69 to finish on 22-under, and becomes the first Asian victor of the event.
McIlroy, who finished his second round in the morning, surprisingly struggled for the first time in seven rounds into his comeback from a three-month layoff, and was 1-over par at the turn in the third round.
Li, the highest ranked Chinese male player in the world at No. 60, produced a brilliant display of iron play and putting to be in great position to add to his only previous European Tour win, the 2016 China Open.
"It was incredible to play with Rory".
Li, who won the 2016 China Open and finished third at last year's Open Championship, is the first Asian victor of the event, and earned the biggest victory of his fledgling career with a tournament record score.
He is now expected to rise to number 32 in the world.
McIlroy ended the final round as he had started it, one behind Li Haotong, as both men carded scores of 69.
On the par 5 18th hole, McIlroy held the advantage when he hit the green in two.
The 28-year-old's closing 69 left him on 22 under par, two shots ahead of England's Tyrrell Hatton, who saved par on the 18th in a closing 66 despite finding the water with his approach.More news: Watch Wednesday's SuperBlueBlood Moon Online at These Streaming Sites
More news: Milan train crash: at least two people killed after derailment
More news: UFC 220: Stipe Miocic defends heavyweight title with victory over Francis Ngannou
McIlroy also dropped a shot at the 16th before he and Li each birdied the final two, but 11 and 13 were the holes that caused the Northern Irishman the most regret.
Li then rolled in a 30ft putt at the 15th and, scarcely believably, found himself in front when McIlroy made a hash of the 16th.
The four-time major champion then recovered with five birdies on the back nine for a 4-under 68 and 19 under overall that put him one behind Li.
The42 has just published its first book, Behind The Lines, a collection of some of the year's best sports stories.
"Especially the first few holes, I was quite nervous", said Li.
McIlroy's last win came in the 2016 Tour Championship.
"But I tried until the very end, making two good birdies". An outward nine of 31 and two more birdies early in his back nine had the West Australian on the edge of contention but two late bogeys saw him slip back. I just wish I could get a couple of those holes back.
"But being in the positions I've been in and having two close calls it's a little hard". I think I wouldn't.the competitor in me is very disappointed right now.