Karlsson, a member of the European Ryder Cup team, finished at 13-under-par 275.
Second place went to Italian Francesco Molinar, who closed with a 70 for 277.
The win was Karlsson's first in two years.
"It's very nice to win, a great relief, and it would have felt a bit strange not to win this season because I've been playing so well," Karlsson said.
Miguel Angel Jimenez (66), Michael Campbell (70) and Ross Fisher (70) shared third place at 279.