The 28-year-old American made a career-best nine birdies in firing a final-round seven-under par 65 to finish on 23-under 265 after 72 holes at Sherwood Country Club.
“It means a lot. I’m really happy to have won this week,” Cantlay said. “I was hitting a lot of good shots. I really felt comfortable with my swing.”
Thomas and Rahm shared second on 266, with Thomas closing by making a four-foot birdie putt to match the Spaniard - preventing Rahm from overtaking absent Dustin Johnson for the world number one ranking.
Cantlay birdied four of the first six holes, made his first bogey of the event only on yesterday’s eighth hole, then followed it with birdies at the ninth, par-5 11th and three in a row starting at the par-3 13th.
“I’ve been playing really well the last little stretch,” Cantlay said. “I just hadn’t put it together four days in a row.
“This week was different. It was nice to get off to a good start. It went pretty well.”
Thomas, the 2017 PGA Championship winner, and Rahm were each denied their third titles of the year.
“I just didn’t play very well. It’s unfortunate,” Thomas said. “To play the par-5s one-under is unacceptable when you’re trying to win.
“I fought like hell. There’s no excuses other than poor execution. It just sucks when you’re right there and you don’t get it done.”
Cantlay’s prior PGA titles came in 2017 at Las Vegas and the 2019 Memorial tournament.
“It feels like my game has been gearing up for this,” Cantlay said. “It’s coming together in time for the Masters.”
World number 14 Cantlay holed 15-foot birdie putt at the par-4 ninth and a five-footer at 11 to stand third at 21-under.
He added a two-putt birdie from 45 feet at the par-5 13th, a 17-foot putt at the par-4 14th and a 10-foot birdie putt at the par-3 15th to reach 24-under, two ahead of Thomas with Rahm three adrift.
Thomas went onto grass on a cliff edge beyond the 15th green, popped the ball onto the green and took his first bogey in 24 holes to fall two back of Cantlay with three to play.
Cantlay missed the green with his approach at the par-5 16th and took a bogey, his lead down to two, while Rahm dropped his approach three feet from the cup and made the birdie putt to pull within one.
Thomas found water to the right of the 16th green on his way to bogey and fell two adrift.
“That was just so pathetic,” Thomas said. “I was just so afraid to hit it left.”
Rahm missed a 15-foot birdie putt at the par-3 17th and a 19-foot birdie putt at the last to ensure Cantlay’s victory.
“I thought the one at 17 was in the whole way and it just stayed right,” Rahm said. “It’s just golf. That’s what it is. It happens.”
Rory’s 29-birdie week
Rory McIlroy, hoping to complete a career Grand Slam by winning next month’s Masters, made a career-best 29 birdies for the week but finished well back on 273.
“I made 29, which is more than enough to win golf tournaments,” McIlroy said. “I just need to cut out the mistakes.
“If I can keep making that many birdies every tournament, sooner or later I’m going to get rid of the bad stuff and I’m going to be right there.”
Reigning Masters champion Tiger Woods, who won last year’s Zozo in Japan before the event was moved due to the COVID-19 pandemic, fired a 74 to share 72nd in a field of 77 on 287.
“The only thing I can take out of this week... is I putted well. I feel like I rolled it great,” Woods said. “Unfortunately, most of them were for pars and a couple for bogeys here and there.”
Woods, a 15-time major champion, was four strokes ahead of five-time major winner Phil Mickelson, who closed with a 78 and finished 76th.