The Team Sky rider reversed his usual policy of dominating sprint stages but not contending for the GC in races by winning the overall title without taking a single stage.
Rabobank's Dutch rider Lars Boom, who pipped the Manxman to stage three on Saturday, was second, eight seconds behind Cavendish as both finished in the main bunch of a sprint finish after both men's teams reined in two attempted breakaways.
Juergen Roelandts (Lotto-Belisol) was third, 14 seconds behind.
"I’ve been second a couple of times in the past but this is my first GC win and I'm really, really happy with it," Cavendish said afterwards.
"The team rode so well yesterday, setting such a high tempo on the front that guys were going out the back all day. We were down to just 25 at the finish - it was incredible and I’m really proud of what we did.
"In today's final stage there was a dangerous guy up the road in the break at just one minute back on the GC but we managed to bring it all back together."
Germany's Marcel Kittel (Argos) won his second stage of the race in Boxtel, sealing the sprinters' points title.
Australia's Mark Renshaw (Rabobank) was second on the day, with Belgium's Roelandts third.
Cavendish, who typically wins or challenges for most sprint stages but struggles with the climbs, managed to stay in contention in a hilly stage three as he outfought his fellow sprinters in the Ardennes to finish second behind Boom.
That ultimately won him the race, although he surprisingly lost out in the points race to Kittel.
Nelson Oliveira (RadioShack-Nissan) won the mountains classification.
Cavendish starts his Tour de France points title defence in Liege, Belgium, on June 30, before linking up with a Team GB dominated by his professional team-mates for the London Olympic Games.