Crusaders fought back from 2-0 and 3-1 down to edge out Ballymena United after extra-time in a thrilling League Cup semi-final at Seaview.
David Cushley's hat-trick proved in vain for Ballymena with his miss when the score was 3-1 a pivotal moment.
Cushley put the Braidmen 2-0 up and after Declan Caddell's reply, completed his hat-trick before the break.
But Caddell's second goal and a Gary McCutcheon penalty ensured extra-time with Jordan Owens heading the winner.
The Crusaders victory, which extended their unbeaten run to 25 games, set up a North Belfast derby in the decider against Cliftonville on 25 January which will be a repeat of last season's final.
However, Ballymena will wonder how they missed the chance to feature in the decider.
The Braidmen bossed the first half against a strangely lethargic Crues who were minus the pace of Paul Heatley who started the contest on the bench.
Helped by a strong breeze in the opening period, Ballymena took the lead on 24 minutes as the unmarked Cushley headed past Sean O'Neill.
Ballymena doubled their advantage within three minutes as a clever Allan Jenkins dummy allowed a charging Cushley to lash past O'Neill with a great left-foot shot.
Crusaders reduced Ballymena's lead within a minute as Caddell's angled shot appeared to surprise Dwayne Nelson as the ball went in off a post.
However, Ballymena appeared back in the driving seat on the stroke of half-time as hesitation in the Crues defence forced a reluctant O'Neill to attempt a clearance, only to fresh-air, which allowed Cushley to poke into the empty net.
Ballymena were forced to withdraw defender Mark McCullagh at half-time and his loss was a factor during the remainder of the contest.
Cushley should have put the game to bed just after the hour mark when he lashed against the bar after another mix-up in the Crues defence.
With three minutes, Crusaders had cut Ballymena's lead as Caddell netted from close range after a Gary McCutcheon free-kick had come back off the woodwork.
Four minutes later, the sides were level as McCutcheon slotted his penalty after Gary Thompson had been adjudged to have fouled Heatley.
Both sides had chances to win the game in normal time as Paul Leeman headed against the Ballymena woodwork and Alan Teggart missed a last-gasp chance at the other end.
Owens's winner came in the first period of extra-time as he headed home a corner that had been needlessly conceded by keeper Nelson.
Moments later, the Ballymena keeper tried to atone by making a great double save to deny Heatley.
Ballymena pressed in the second period of extra-time with Cushley firing wide after a sliced Crues clearance.
Cushley also had a late claim for a penalty turned down when he was bundled over in the box after seeing his scrambled effort saved by O'Neill.
This was a defeat that will have hurt Ballymena.