The 24-year-old’s third win in as many meetings with the Canadian also secured his top-10 debut.
Cobolli now faces a compatriot - either Matteo Berrettini or Matteo Arnaldi - for a place in his first Grand Slam final.
"I think we played two different matches today," Cobolli said. "The first set was incredibly windy and it was really tough to play, and I went to the toilet to think a bit to change something. I think this is the best score that I ever played in my life because I can play my best tennis.
"I just said to myself to fight because I felt like this is the chance of my life. I have to give everything in my matches, and today I did it, so I'm really happy."
More come to come…