Crusaders booked a place in the Irish Cup final against Linfield after a deserved win at Mourneview Park.
Richard Clarke redirected a Matthew Tipton shot into the top corner to give the Ports a fourth minute lead.
Michael Halliday stabbed in the equaliser from close range before Declan Caddell nipped in score after hesitancy in the Ports defence.
Jordan Owens headed in with five minutes left to seal the victory.
Crusaders suffered a blow minutes before kick-off when midfielder Chris Morrow suffered a hamstring injury in the warm-up and he was replaced by Aidan Watson.
Clarke gave the Ports the perfect start but their north Belfast opponents created the better chances throughout the game.
David Miskelly tipped over a powerful Owens strike and the keeper made another good save to deny Stuart Dallas.
Caddell headed across goal from Gareth McKeown's 38th minute free-kick and Halliday was left free to tuck home from two yards.
Crusaders' dominated the second half, which started with Dallas volleying over from 18 yards.
Caddell, who squandered a good chance in the first half, struck a post before putting the Crues in front on 68 minutes.
A mix-up between Brian Gartland and Miskelly was punished as the midfielder pounced on the loose ball before slotting in.
Owens completed the scoring with a close-range header from Martin Donnelly's inswinging corner.
Ports forward Kevin Braniff skimmed the crossbar in the dying seconds as Ronnie McFall's team succumbed to a third cup defeat in a miserable week.
Crusaders won the Irish Cup in 2009 and boss Stephen Baxter is looking forward to another showpiece occasion on 7 May.
"The boys did fantastic to come from behind and our football was class," he said.
"They started brighter but I thought we we would win after coming in 1-1 at the break.
"Linfield will be a big test for us but we will not go into the final with fear."