Jonzon saw off a late charge from German star Martin Kaymer, who was playing in his first event since breaking his toes in a go-kart accident in August.
The 37-year-old Swede needed to finish in the top two to keep his European Tour card for next year and he claimed his first tournament win in 12 years after Kaymer failed to force a play-off on the 18th.
Kaymer was six shots behind with five holes to play but rattled off birdies on 14, 16 and 17, while world number 482 Jonzon produced a double-bogey on 15 before dropping another shot on the penultimate hole.
The two were level going down the last – with Jonzon’s compatriot Christian Nilsson also on 19-under-par in the clubhouse – but after Jonzon held his nerve to birdie from 18 feet, the 24-year-old Kaymer missed from nine feet.
“I’m on the moon,” said Jonzon, who had not achieved a top-10 finish since December 2008 and whose last title was the 1997 Portuguese Open.
“It’s been desperate for me and I am kind of speechless at the moment. It’s unbelievable. It’s going to take time to let this sink in, I guess.
“I’m just so thrilled to have a playing status for next year and I’m so proud of myself, the way I handled these days.”
Jonzon was a shot ahead overnight but lost the lead when defending champion Sergio Garcia, playing on his home course, began his fourth round with back-to-back birdies.
The Spaniard, though, could not sustain his challenge and ultimately finished fourth.