The American fired a final-round 71 on the par-72 Quail Hollow course for a 14-under total of 274 and a one-stroke victory over Jim Furyk.
Furyk stormed into contention with a seven-under 65, but overnight leader Holmes's effort – capped by a three-footer for bogey at the last – was good enough for a third career title.
His previous two came at Phoenix in 2006 and 2008, but since then he had been slowed by health troubles.
He began 2014 playing on a medical exemption, but had won enough money by April to secure his spot on tour for the remainder of the year.
"It feels great," said Holmes. "It's been a long journey for me. I've had some ups and downs, so it's a great feeling to be out here and get one done.
“I felt good going all day. I played well and hit the driver well. It was a good day for me."
American Martin Flores carded a final-round 72 for sole possession of third place on 276. Jason Bohn carded a 70 for 277.
US Open champion Justin Rose of England carded a 71 for fifth place on 278.
Phil Mickelson, who won the most recent of his five major titles at the British Open last year, had charged into contention on Saturday with a nine-under par 63.
But the US star slumped to a four-over 76 that included three bogeys and one double-bogey to fall into a tie for 11th on 281.
COMMENTS
Comments are moderated and generally will be posted if they are on-topic and not abusive.
For more information, please see our Comments FAQ