By Gabriel Tan
Heading into the game with scores tied at 1-1 from last week's first leg, the visitors edged ahead in fortuitous fashion in the 27th minute when Agu Casmir's shot found the back of the net via a deflection off Aidil Zafuan.
The Armed Forces then launched an all-out onslaught on their opponents' goal, only to find themselves denied time and time again by the woodwork and a brave display from LIONSXII custodian Izwan Mahbud until the seventh minute of injury time, when Marlon Alex James powered home a header.
With neither side able to find another goal in extra-time, the game proceeded to penalties and following two misses from both teams, ATM were leading 5-4 in sudden death when Yasir Hanapi stepped up and fired his effort back off the post to end the LIONSXII's hopes of making the final in their debut season in Malaysian football.
It was a cruel way to end the game for Yasir, who started very brightly and ensured his team did not go behind as early as the third minute, when he made a vital block to deny D. Christie Jayaseelan at the far post after Izwan had tipped a Zaquan Adha cross back into the danger area.
ATM were certainly enjoying the stronger start of the two teams and created further chances in the opening 15 minutes for Christie and James, although the opposition keeper was equal to the task on both occasions.
LIONSXII however gradually worked themselves into the game and threatened the hosts' goal for the first time in the 22nd minute when Safirul Sulaiman played a long diagonal ball to Shahril Ishak, who ran straight at the Armed Forces defence but took too long to get his shot away, eventually firing away a meek shot that was easily cleared by K. Reuben.
Watch: Lions XII bow out on penalties... More Videos
Nonetheless, the visitors found themselves ahead just five minutes after, although there was a touch of fortune in the way they scored after Casmir received the ball from Shahril and turned his marker, before hitting an effort that took an awful deflection off Aidil and looped over a hapless Farizal Harun.
Buoyed at taking the lead, V. Sundramoorthy's men began to grown in confidence and Casmir narrowly missed out on a second in the 38th minute when Hariss Harun met a freekick from Shahdan Sulaiman with a knockdown header that was just out of his reach.
ATM were then unlucky not to equalise on the stroke of halftime when Aidil met a delivery from Azmi Muslim with a firm header that came smashing off the bar, but just as Hairuddin Omar looked set to pounce, Abdil Qayyim slammed the door shut with a last-ditch clearance.
Nine minutes after the break, Reuben weighed in with a crucial intervention of his own when he blocked an effort by Casmir from point-blank range, after Farizal had spilled a well-struck freekick by Shaiful Esah into the Singapore international's path.
Despite a relatively-quiet start, James was gradually starting to come alive and three minutes after the hour mark, he had a penalty appeal turned down after he turned sharply to create space for himself, only to be felled by Baihakki Khaizan inside the box.
11 minutes later, the Saint Vincent and the Grenadines international did another clever spin on the edge of the area and unleashed a ferocious shot, but thankfully for the visitors, his strike was fairly central and Izwan saved comfortably.
The hosts then wasted a fantastic chance to draw level a minute later when Bruno Martelotto somehow sent a shot wide with the whole goal to aim for, after substitute Venice Elphi went on a terrific run past Safirul and Yasir down the left, before playing a neat ball back to the Argentinean.
11 minutes from time, Izwan produced one of the saves of the game when he tipped away a blistering freekick from James at full stretch but a minute later, he had his woodwork to thank after the ATM striker's cross-cum-shot had him beaten all ends up but bounced back off the far post.
But there was to be no denying the 35-year-old in the seventh minute of injury-time when he sent a towering header into the top corner to make it 1-1 and send the game into extra-time, after Zaquan cut inside Juma'at Jantan and curled in a perfect cross for his team-mate.
Five minutes into the extended period, the LIONSXII were reduced to ten men when Isa Halim picked up his second booking after a lunging challenge on Zaquan, although replays showed he did make contact with the ball.
Three minutes later, Zaquan, who was putting in a tireless shift down the right, whipped in another cross into the box that Izwan could only divert to Hairuddin after severe pressure from Rezal Zambery. As he had did early on, Yasir recovered well to prevent what looked a certain goal by poking the ball away before the Armed Forces skipper could get a shot away.
ATM had one final chance to grab a winner in the 117th minute when, seconds after Khairul Amri had a penalty shout waved away, James broke on the counter and sprinted in between Hariss and Baihakki and through on goal, only for Izwan to deny him with a clever stop.
In true Malaysia Cup fashion, the match then went to penalties and it looked as the LIONSXII were in command after the hosts saw their second effort by Aidil saved by Izwan.
However, Farizal bailed his team-mate out by tipping Shaiful's effort onto the post, and after further misses from A. Varanthan and Baihakki, substitute Fitri Omar confidently despatched his spot-kick to put ATM 5-4 up.
Ultimately, the shootout was always going to produce one villain and this time around, it was the unfortunate Yasir who was cast in that role as his well-struck penalty came smashing off the post, sending ATM through to the final and shattering his side's dream of cup glory.
ATM: Farizal Harun, K. Reuben, Aidil Zafuan, Irwan Fadzli, Azmi Muslim (A. Varanthan 89'), Rezal Zambery, Hairuddin Omar, Zaquan Adha (Fitri Omar 118'), Bruno Martelotto, D. Christie Jayaseelan (Venice Elphi 52'), Marlon Alex James.
LIONSXII: Izwan Mahbud, Yasir Hanapi, Abdil Qayyim (Madhu Mohana 78'), Baihakki Khaizan, Shaiful Esah, Isa Halim, Hariss Harun, Shahdan Sulaiman, Shahril Ishak (Juma'at Jantan 88'), Safirul Sulaiman, Agu Casmir (Khairul Amri 57').