The 36-year-old Spaniard, who won the Cincinnati title in 2013, was playing his first match in well over a month after withdrawing with an abdominal injury from his Wimbledon semi-final against Nick Kyrgios.
Nadal began the season with three titles and 20 consecutive wins but will head into the US Open after only one summer hardcourt match.
The night appearance by the 22-time Grand Slam champion was interrupted for an hour and a quarter by rain in the opening set.
Once back, the pair struggled into a first-set tie-breaker which lasted for well over a quarter of an hour.
WHAT A WIN! 🔥@borna_coric takes out Rafael Nadal 7-6, 4-6, 6-3 to advance in Cincinnati 💪@CincyTennis |… https://t.co/nV3IOiVQ44
— ATP Tour (@atptour) 1660794072000
Nadal missed on two set points of his own and had to save two set points for Coric.
But on the Croat’s third opportunity, Nadal handed over the set after an hour and a quarter on court with a costly double-fault.
Nadal then took another 75 minutes to square the match thanks to a break in the seventh game of the second set.
The Spaniard got into trouble as he was broken to trail 2-4 on a forehand wide, opening the door for Coric, who underwent right shoulder surgery last year, to finish off the victory in just under three hours.
“It was very very special,” Coric said. “I’ve been out the last two years injured. I didn’t play on the big stage. “I was looking forward to playing this match. It was all kind of crazy I would say.”