It was an interesting clash of styles going into the contest, with Hurkacz expected to rely on his dominant serve, while Ruud is one of the game's top returners, so when Ruud responded to an early break and was the one serving up a storm, it spelled trouble for the world number 10.
Ruud landed 78 per cent of his first serves in the opening set, compared to 60 per cent for Hurkacz, and the Norwegian won 95 per cent of those points (20-of-21) to allow just one break point in the frame while creating four for himself.
As Ruud's serve began to falter – with his first serve accuracy and effectiveness both cratering in the second and third set – his game began to struggle to hold up to the metronomic consistency of Hurkacz, who won the ace count 18-to-eight.
After pulling the match even at one set each, Hurkacz took the contest by the scruff of the neck and won the first four games of the deciding frame to pull away.
Poland's Hurkacz – who won his only previous ATP 1000 final against Jannik Sinner at the 2021 Miami Open – will now face Pablo Carreno-Busta in the decider after the Spaniard prevailed in a three-hour war of attrition against Daniel Evans 7-5 6-7 (7-9) 6-2.
In a match that was close in every area, Carreno-Busta was slightly better, winning 68 per cent (68-of-100) of his service points compared to 60 per cent (66-of-110) for Evans, while committing just one double fault compared to the Englishman's six.
It will be Carreno-Busta's first ATP 1000 final appearance, with the 2021 Hamburg Open – an ATP 500 event – the only career title for the 31-year-old above the ATP 250 level.