Cobolli trailed 1-3 in the final set but won five of the next six games to stay on course for a third ATP title to go with clay-court victories in Bucharest and Hamburg last year.
The 23-year-old from Florence fended off two break points at 3-3 in the third, saving both with forehand winners.
Unable to serve out the match at 5-3, he broke Kecmanovic in the next game to secure the victory over the Serbian, who had beaten world number four Alexander Zverev in the second round.
"I think we both played an amazing match," Cobolli said.
"I was a little bit lucky at the end, because at the crucial points sometimes you need luck. I'm really proud of myself because it wasn't easy to come back."
Eighth-seeded Tiafoe rallied from a set and a break down to beat fellow American Brandon Nakashima 3-6, 7-6(6), 6-4.
