The 24-year-old was trailing overnight leader Kevin Kisner by two shots heading into the final round, but shot a three-under-par 68 to finish on eight under and take the title.
Francesco Molinari (67), Patrick Reed (67) and Louis Oosthuizen (70) finished in a three-way tie for second, while Kisner dropped back to four under after a disappointing round.
"I can't put it into words right now. I'm glad to have a trophy now," said Thomas, who made six birdies in his final round.
One of the birdies, and probably one of the most crucial, came on the 10th, when he rolled a birdie putt towards the hole where it clung to the lip for 15 seconds before eventually dropping.
"It was funny because it snuck up on the hole. We read it going left and then a bit right and it never came back right," Thomas said.
"Once it got there I felt it would go in but it didn't so I acted like a child and had a tantrum. Suddenly it went in and I didn't look so dumb!"
Elsewhere, Rickie Fowler and Hideki Matsuyama both finished tied on five under, while pre-tournament favourites Rory McIlroy and Jordan Spieth finished on one over and two over respectively.