Holmes closed with a one-under 70, and that was enough to overcome Justin Thomas, who took 19 putts on the back nine at Riviera - three of them from eight feet when he lost the lead for good - and shot 75.
“I knew it was going to be very difficult to shoot a low score,” Holmes said. “I needed some help from Justin.”
They played 34 holes because of a seven-hour rain delay at the start of the tournament Thursday, and that wasn’t even the worst of it.
The final day featured a wild shift in weather, from sunshine in the morning to complete 16 holes of the third round, brief rain when they teed off in the final round and wicked wind that made it tough to hole putts.
There were three two-shot swings on the back nine, all because of putting.
The biggest moment was on the 13th hole, when Holmes was one shot behind and made a 12-footer for par. Thomas, who had lagged his birdie putt from 65 feet to eight feet from the cup, three-putted from there for a double bogey to fall one shot behind.
He three-putted the next hole to fall back further, made an eight-foot birdie on the 16th to get with one but couldn’t catch up.
Holmes had his problems, too. Right when he took the lead for the first time - a birdie on the par-4 10th and a three-putt bogey from long range by Thomas - Holmes turned birdie into a shocking bogey when he three-putted from 3 feet.
Thomas, who looked sharp as ever in the morning in his round of 65 to build a big lead, missed a 6-foot birdie putt that would have tied for the lead at the par-5 17th after Holmes three-putted for par from 30 feet. He had one last chance to force a playoff, but his 20-foot birdie putt broke off to the right.
Tiger Woods shot 65 to finish his morning third round, though he was never in range of winning. Woods closed with a 72 in the afternoon, and tied for 15th.
Rory McIlroy carded a 69 to finish jojnt-fourth on 11-under, while further down the leaderboard Englishmen Paul Casey and Tommy Fleetwood finished tied 25 and tied 28th respectively (five and four under).
Martin Laird, the sole Scot in the field, missed the cut after rounds of 75 and 76.
On the Champions Tour, Miguel Angel Jimenez won the Chubb Classic for his seventh success on the circuit, beating Bernhard Langer and Olin Browne with a 5-foot par putt on the first hole of a play-off in Naples, Florida.
Jimenez closed with a five-under 66 at The Classics at Lely Resort to match Langer and Browne at 13-under 200. Langer shot 68, and Browne had a double bogey on the par-4 18th in regulation for a 66.
Jimenez has won in each of his six seasons on the 50-and-over tour. The 55-year-old Spaniard won the major Regions Tradition and Senior British Open last season.
Langer, 61, the Oasis Championship winner last week near his home in Boca Raton, won the event in 2011, 2013 and 2016.
Sandy Lyle and Colin Montgomerie both finished joint-sixth after closing efforts of 68 and 70 respectively gave them 11-under totals.