The 39-year-old Argentine finished at 10-under 282 on the 7,665-yard Barseback Golf Club course ' the longest in European Tour history.
Jamie Donaldson of Wales closed with a course-record tying 68 to take second. Jeppe Huldahl of Denmark (74) was third, another two shots back.
Gonzalez pitched to 2 feet on the 16th, then holed a bunker shot on the next to take the lead. On the last hole, he hit over trees to within 5 feet of the flag.
I felt very confident when I went to the bunker, Gonzalez said.
Overnight leader Marcus Fraser of Australia slipped to a 77 and shared fourth at 288 with six others.
It was the fourth European Tour win for Gonzalez, who played on the Challenge Tour and smaller events in Sweden earlier in his career.
Im very happy. It was a very important win because I havent played so well this year, said Gonzalez, who did not make the top 10 in 13 previous tournaments this year. He missed six cuts.
Henrik Stenson, a Barseback member who will move to fifth when the world rankings are updated Monday, closed with a 76 that left him tied for 73rd among 78 finishers.