The win was DiMarco's first on the European Tour. This was the first European event DiMarco has played outside the four major championships and the World Golf Championship events. It was also his first win anywhere since the 2002 Phoenix Open on the U.S. PGA Tour.
Stenson, the third-round leader who set the course record of 62 on Saturday, carded a 69 on Sunday to end one shot back at minus-19. Garcia fired a 6-under 66 to take third place at 18-under-par 270.
Ricardo Gonzalez was one stroke further back at minus-17 after a closing 68. Miguel Angel Jimenez took fifth place at 15-under-par 273 after he could only manage a 71 in the final round.
Jyoti Randhawa had the low round of the day as he fired a 7-under 65 to climb into a share of sixth place at 13-under-par 275. He was joined there by Colin Montgomerie, who posted a 70 on Sunday.
World No. 2 Vijay Singh ended in a tie for eighth after a 70. He finished alongside second-round leader Charl Schwartzel at minus-11.
DiMarco, who lost to Tiger Woods in a playoff at The Masters last year, quickly overtook Stenson for the lead. The American birdied the first, from 6 feet out, and drained eagle putt at the par-5 second to jump to 18 under, two clear of the Swede.
'I just played good, solid golf all week,' DiMarco said. 'And then I got off to a great start today, which really helped obviously calm everything down. It put me up in front where I didn't have to feel like I had to make birdies and I could put it in the middle of the green.'
Stenson moved back within one shot of DiMarco with a birdie on the third. However, DiMarco answered with a 4-foot birdie putt on No. 4.
DiMarco stumbled to just his fifth bogey of the week at the seventh. Stenson then birdied the next to join DiMarco in the lead at minus-18.
That tie was short-lived though as Stenson dropped a shot at the ninth. They each birdied the par-4 11th as DiMarco stayed one clear of his playing partner.
DiMarco parred four straight holes before dropping his approach to the 16th within 15 feet for a birdie that got him to 20 under. The 37-year-old ended with a pair of pars to close out the win.
Stenson parred six consecutive holes after his birdie on 11. He two-putted for birdie at the par-5 closing hole to end one behind DiMarco.
'I drove the ball nicely, but just couldn't hit the irons close enough,' Stenson said. 'I wasn't really on either with my putter. I struggled, but kept it fairly tight. Second is not that bad, but going out with a one-shot lead, you always want to win.'
A pair of Englishmen -- David Lynn and Ian Poulter -- shared 10th place at 10- under-par 278. Francois Delamontagne, Mark Foster, Andrew McLardy and Lian-Wei Zhang were one stroke further back at minus-9.