Royal School Armagh will face Campbell College in the Renault Schools' Cup final on St Patrick's Day after a 16-10 victory over Ballymena Academy.
Royal School Armagh celebrate their 16-10 semi-final victory
Armagh scored tries through Philip McAllister and skipper John McCall with Jonathan Gillespie adding a penalty and Adam Batholomew a drop goal.
James Ritchie kicked a penalty for Ballymena and converted an injury-time try by James Taggart.
Ballymena never got to grips with a game riddled with handling errors.
However, they did the lead in the eighth minute when fly-half Ritchie landed an angled penalty.
A well-organised Armagh levelled 10 minutes later when Gillespie put over his first crack at goal.
But it was a different story in the second half as the Armagh pack out-muscled their opponents up front in a game which saw little flowing back play.
Armagh inched ahead in the 45th minute when their livewire scrum-half Batholomew slotted over an opportunist drop goal from the base of ruck.
Ballymena further lost their way and any momentum they had tried to build, when lock Richard Boyd was stretchered off with a serious facial injury and play was held up for 10 minutes.
It was Armagh who then stretched their lead on the hour with one of the rare three-quarters line moves which allowed left wing McAllister to finish off in the corner.
Eight minutes later is was all but over when Armagh skipper McCall crashed over at a five-minute scrum.
Ballymena, however, never gave up and in the eighth minute of injury time hooker Taggart crashed over with Ritchie converting with virtually the last play of the game.