Garcia, who holed out for eagle on the 18th Saturday, closed with a 3-under 68 to end the tournament at 14-under-par 270 at Crans-sur-Sierre.
Englishman Paul Casey posted a final-round 66 to take third place at minus-12. Luke Donald, the 2004 champion, carded a 2-under 69 Sunday to share fourth place at 11-under-par 273. He was joined there by Welshman Garry Houston.
Garcia led by one entering the round, but that small cushion was erased as Houston birdied the first to join Garcia at minus-11. However, Houston dropped a shot at the next and trailed the rest of the way.
The Spaniard birdied the fourth to move to 12 under, two clear of four players -- Houston, Gustafsson, Casey and Donald. Garcia got up and down for birdie on five to move three strokes ahead.
Garcia rolled home a birdie try on six to stay three ahead of Donald and Houston. He ran home a 35-foot birdie attempt at the next to go four up on those two.
The 25-year-old began to scramble from there. Garcia missed the fairway on nine and saved par. He missed the short grass again at 10, then left his second shot short in a bunker.
Garcia left 10 with a bogey that dropped him to 14 under. He missed the green at the par-3 11th, the fairway at 12 and the green on the par-3 13th. Garcia did save par on all three, but his lead was nearly gone.
Gustafsson played the front nine in 5 under. He dropped a shot at the 10th, but got that stroke back with a birdie on 12. The Swede rolled in back-to-back birdie tries from the 16th to get to 13 under.
Garcia three-putted for bogey on the par-5 14th and that dropped him to 13 under and into a share of the lead. As Gustafsson parred the last to get into the clubhouse at 13 under, he and Garcia were joined in the lead by Casey.
Casey bogeyed the 13th, but came right back to birdie 14 and 15 to move to 13 under. Garcia, playing right behind Casey, was all over the 15th. His drive landed in the rough, then he knocked his second into a greenside bunker. He pitched his third across the green into the rough before chipping to a foot to save par.
Gustafsson was sitting in the clubhouse watching as Casey fell back to 12 under with a bogey on 16. Casey still could have forced a playoff, but he could only par the last two holes to end two strokes back.
Garcia kept scrambling, but this time his wedge game saved him again. After missing the green long left at the par-3 16th, Garcia chipped in for birdie and a one-shot lead.
He missed the fairway again at 17, but saved his par. Garcia had a good look at birdie at the last, but left that putt just short and tapped in for par and his sixth European Tour crown.
'I started really well. I played a very good front nine' Garcia said. 'I got a bit unlucky with a bounce on that chip on nine, and I didn't birdie that hole. Then I went through a stretch where nothing good was happening to me and I was managing to make some good saves.'
Garcia dedicated this win to his agent, who passed away Friday evening.
'It was a hard day. It's been a tough week with the passing of a very good friend of mine,' said an emotional Garcia. 'My agent passed away Friday night and it has been difficult. I wanted to win for her so badly. I almost tried too hard. It was nice to give her that win.'
Pierre Fulke shot 3-under 68 Sunday to end alone in sixth place at 10-under-par 274. Philip Golding and Stuart Little were one stroke further back at minus-9. Jamie Spence, Paul Broadhurst, Emanuele Canonica and Steven O'Hara shared ninth place at 8-under-par 276.