DJ Trahan clawed back a four-stroke deficit to win the Bob Hope Chrysler Classic by three shots.
Trahan, who earned $918,000 for his second career victory, shot a final round seven-under-par 65 for a five-day total of 26 under.
Overnight leader Justin Leonard blew the chance to claim his 12th career victory after carding consecutive bogeys at the start of the back nine, losing his four-shot advantage by the 11th hole.
The 1997 Open champion finished runner-up after and even-par 72 overall, while Kenny Perry and Anthony Kim finished four strokes off the pace in third after both carded a 66.
"I'm very proud of the way I played," Trahan said.
"I knew it was going to be a hard-fought day. I had to go out there and shoot a low number and I did that."
In two previous appearances at this five-round pro-am event, Trahan failed to make the cut for the final day and managed only one score in the 60s in eight rounds.
His only other win was at the Southern Farm Bureau Classic in 2006.
Leonard's four-stroke advantage with 18 holes to play looked insurmountable, especially when he posted a three-under 33 on the front nine and was three strokes up with nine holes to play.
"I played solidly the first eight holes," Leonard said.
"I was three under par. Obviously, DJ was playing well."
Trahan was one of four golfers tied for second going into the final round and birdied four of his first six holes.
Leonard's first birdie was a 10-foot putt at the third. He made a 40-foot birdie at the following hole to maintain a three-stroke lead after Trahan had chipped in from 34 feet off the right of the green.
Trahan started niggling away at Leonard's advantage just before the two made the turn. He sunk a six-foot birdie putt on the par-five 595-yard ninth to cut the lead to three.
Trahan played the par-fives well, collecting a birdie on all four of them.
"The front nine (Leonard) played so solidly, I knew I had to keep up with him," Trahan said. "The birdie on nine really sparked me."
On the 10th hole, there was a two-shot swing when Trahan made a 34-foot putt for a birdie and Leonard committed his first miscue of the day.
Leonard's second shot just reached the front of the green on the 474-yard par-four. He lagged his first putt to 12 feet, but could not save par.
The two were tied after the 11th hole when Leonard made his second consecutive bogey. His approach shot landed in the right greenside bunker and he was unable to get up and down.
"Bogeying 10, 11 from the fairway, they're difficult holes, but to make bogey there at those two holes was obviously a huge difference in the outcome," Leonard said.
"I never really gave myself a chance on the last four holes, which is disappointing."
With the two players tied, Trahan took the lead on the par-five 14th, reaching the green in two, lagging his first putt from 76 feet to 5 feet and confidently knocking in for a birdie.
The one-stroke advantage stayed until the 18th hole.
Trahan hit his drive on the fairway, but Leonard knocked his into the water on the right.
Trahan made no mistake to wrap up a remarkable comeback.
He has struggled with his putting in the past, but was delighted with his new-found form on the greens.
"It means a lot and it is the reason I (won)," he said.
"The greens are perfect and it is a birdie contest. I set a goal for myself to work on my putting and it went in the right direction this week."
Collated final-round scores (USA unless stated, par 72):
(x) denotes amateurs
334 D.J. Trahan 67 64 68 70 65
337 Justin Leonard 68 64 67 66 72
338 Kenny Perry 66 72 65 66 69, Anthony Kim 69 67 67 66 69
339 Steve Elkington (Aus) 66 68 69 67 69, Ryan Moore 75 64 67 67 66, Chez Reavie 69 68 67 70 65
341 Brett Rumford (Aus) 67 68 69 67 70, Charley Hoffman 68 72 71 63 67, Vaughn Taylor 70 68 68 69 66, Boo Weekley 69 70 62 69 71
342 Dustin Johnson 67 69 72 63 71, Ben Crane 66 69 69 67 71, Robert Allenby (Aus) 73 69 68 64 68, Nicholas Thompson 68 70 68 66 70
343 Robert Gamez 66 65 67 71 74, Bill Haas 69 68 69 68 69, John Merrick 73 65 67 68 70, Bart Bryant 71 69 68 67 68, Ryuji Imada (Jpn) 71 68 67 67 70, Shane Bertsch 70 71 64 66 72
344 Charlie Wi (Kor) 68 68 74 67 67, John Senden (Aus) 68 73 66 68 69, Scott Verplank 70 65 70 68 71, Jason Bohn 66 74 66 69 69
345 Brian Davis (Eng) 72 69 69 67 68, Bubba Watson 70 71 66 72 66, Stewart Cink 68 71 66 71 69
346 Charles Warren 74 69 65 67 71, Y. E Yang
71 70 67 69 69, Steve Marino 72 71 68 66 69, Olin Browne 68 68 75 68 67, Matthew Jones (Aus) 70 70 68 66 72, Jesper Parnevik (Swe) 67 74 66 68 71
347 Mathew Goggin (Aus) 65 73 69 69 71, Michael Allen 69 71 70 69 68, Frank Lickliter II 72 69 68 69 69
348 Jin Park (Kor) 69 74 66 70 69, Joe Durant 65 73 71 69 70, Brian Gay 71 67 71 68 71, Rich Beem 72 72 68 66 70, Johnson Wagner 67 71 73 65 72, Tommy Armour III 70 71 70 68 69
349 Jeff Maggert 70 71 70 66 72, Rodney Pampling (Aus) 71 70 67 69 72, Tim Petrovic 65 70 68 72 74, Steve Flesch 72 69 69 65 74, Ryan Armour 70 75 68 67 69, Heath Slocum 69 70 72 65 73
350 Brad Adamonis 68 70 69 72 71, Tom Scherrer 71 70 66 69 74, Chad Campbell 76 68 69 68 69, J J Henry 71 72 69 69 69, Jeff Quinney 66 69 73 72 70, Kyle Thompson 68 67 72 72 71
351 Paul Claxton 70 73 68 69 71, Joe Ogilvie 71 70 67 73 70, Mike Weir (Can) 70 70 68 70 73, Martin Laird 71 69 71 70 70, Kevin Sutherland 70 71 71 68 71, Fred Couples 69 73 71 68 70
352 Patrick Sheehan 73 71 72 65 71, Chris Stroud 70 71 69 70 72, Lucas Glover 70 71 69 71 71, Shaun Micheel 72 71 67 70 72
353 Michael Letzig 68 75 67 71 72, Kevin Na (USA) 69 69 70 69 76, Justin Bolli 72 71 69 67 74, Brett Wetterich 71 71 67 72 72
354 Scott McCarron 68 74 70 69 73, Paul Goydos 72 70 71 68 73, Woody Austin 68 72 73 67 74, Mark Brooks 71 70 70 70 73, Jason Gore 71 72 69 68 74
355 Kevin Stadler 72 69 68 71 75, Ken Duke 67 70 69 74 75