The Italian giants led by a single goal at the break after Lautaro Martinez had headed them in front but blitzed their opponents with four more goals in the second half.
Danilo D’Ambrosio doubled the lead and Martinez was on target again before Romelu Lukaku’s double saw the former Manchester United, Everton and Chelsea striker extend his run of scoring in his last 10 matches in the competition.
Inter are back in the final of a European competition for the first time since their memorable treble of 2009-10 under Jose Mourinho and Friday’s showpiece against Sevilla will be their 10th European final in their history.
Shakhtar, who were looking to reach their second ever European final, having won the UEFA Cup in 2009, will surely go home disappointed and with regrets after failing to show any urgency on the night.
Martinez headed home Nicolo Barella’s cross after a mistake by goalkeeper Andrei Pyatov in what was the game’s first shot at goal.
Shakhtar enjoyed the majority of possession, especially in the first half, but looked stumped as to how to deal with Antonio Conte’s organised and disciplined Inter defensive unit.
The Ukrainian side finally offered something late in the first half when Marcos Antonio’s long-range effort flew narrowly over the crossbar.
Another mistake early in the second half almost gifted Inter a second goal. Davit Khocholava got himself in a mess on the ball and Martinez fairly barged him aside before spotting Pyatov off his line and going for the chip, but Shakhtar’s veteran goalkeeper leapt high to tip the ball away.
Shakhtar had a golden opportunity to equalise just after the hour mark. It looked a carbon copy of the goal which Inter had scored in the first half.
Mykola Matviyenko swung in a cross and Junior Moraes met it with a header but his effort was straight at Samir Handanovic. Either side of the goalkeeper and it would have been a goal.
It proved pivotal as Inter went straight down the opposite end and and extended their lead as D’Ambrosio headed home from a Marcelo Brozovic corner.
Martinez fired in his second goal of the game after 74 minutes with a low shot from 20 yards before Lukaku got on the score sheet four minutes later, calmly beating Pyatov when put through one-on-one with the goalkeeper.
The Belgian scored again seven minutes from time, showing a good turn of foot to race past his marker before firing past Pyatov once more.