Coric, the 20-year-old world number 79, trailed 3-0 in the second set and 4-2 in the decider before he rallied to victory against the third-seeded Kohlschreiber, who was bidding for an eighth title.
The Croatian lost the 2016 Marrakech final to Federico Delbonis of Argentina.
Coric fired 10 aces to defeat Kohlschreiber after two hours and 38 minutes, the longest final on the ATP World Tour this year.
"I would say that's my biggest comeback, I've never saved five match points," said Coric.
"Especially in such an important match, I served very well in the big points. It's an awesome feeling. I didn't know what to expect when I came here and I wasn't in the best shape.
"But I've been working very hard the past three or four months and now it's paying off."
For 33-year-old Kohlschreiber, the manner of defeat was nothing new -- he squandered seven match points against world number one Andy Murray earlier this year.
"It was one of those days," said the German veteran.