Haas had started the day on eight under and led Graham DeLaet by one stroke. The Canadian DeLaet dropped to a tie for fifth place after a four-over 75 meant he finished on three under at Innisbrook.
Haas birdied the 2nd but dropped shots at the 3rd, 4th and 9th put his lead under threat. Haas picked up shots on the 11th and 12th but a bogey on the 16th left him on seven under after a round of 72.
Schwartzel was already in the clubhouse on seven under after a four-under-par round of 67 which included six birdies and two bogeys.
Schwartzel had looked out of touch until he picked up shots on the 13th, 14th and 17th.
That led to a play-off on the 18th that Schwartzel won with a par four after Haas’s hopes slipped away with a bogey.
It was Schwartzel’s third win of the 2016 campaign after a brace of successes in South Africa on the European Tour.
“There’s nothing like that that gets you pumped like winning,” said Schwartzel, who is now looking forward to the upcoming Masters at Augusta, where he claimed the Green Jacket in 2010. “It’s a place I feel very comfortable with and for me the best thing of all of it I’ve actually got my fade back.
“All over it’s a really good boost to going back and starting the first year, first major of the year. I mean it’s a really exciting week and always look forward to it.”
American Ryan Moore was alone in third on five under with the American amateur Lee McCoy a shot further back in fourth.
World No 1 Jordan Spieth, after a final round of 73, finished on even par for a tie of 18th place.
“Really poor from both me and Michael (Greller, his caddie) today,” said Spieth. “Our decisions cost us a few shots early and all the momentum. We both get the credit when things are going good and we’re going to take the fall today.
“I hit the shots, but we made a couple decisions that make me look back and think, ‘Wow, we got some stuff to talk about before we get ready to go to a major.’ Bit of a bummer. But it’s OK. We got plenty of time.”
Russell Knox, the sole Scot to survive the cut, finished joint-56th on six-over after a closing 76.
Ian Poulter is in danger of missing out on next week’s WGC Dell Match Play in Texas.
It follows the Englishman finishing tied for 67th in the Valspar Championship after a brace of 75s over the weekend.
That bumped Poulter down to No. 67 in the world ranking, which could knock him out of the WGC line-up.
The Valspar event was the final week before the world ranking is used to determine the 64-man field.
Jim Furyk and Henrik Stenson are not playing so Poulter faces a sweat to see if any of the other eligible players decide to skip the event.
Thai-based Scot Simon Yates was pleased with his top-10 finish behind Australian Scott Hend in the True Thailand Classic at Black Mountain in Hua Hin.
“Overall it was a good week and I’m already close to making my card on the Asian Tour for next year,” said the 45-year-old Glaswegian.
Yates, who lives on the Black Mountain course, signed off with a two-under-par 70 as he chalked up his first top-10 finish in a European Tour event for nearly nine years.
“It was a great start to the round yesterday with three birdies in the first four holes,” he added.
“I hit a great shot into the fifth green thinking I was close but got up there and was on the front fringe. I had a straightforward chip which I didn’t hit well and missed the putt.
“After that I made 13 pars with a couple of good up and downs and some good birdie opportunities but didn’t take them.”