Tyrone will meet Donegal in next week's Ulster U21 final after an impressive display against Armagh.
Tyrone started well in Breffni Park and had three points on the board before Armagh got moving, with Ruairi McGlone, Kieran McGeary and Dan McNulty on target.
The Orchard County were struggling to get a foothold but Cathal McKenna goaled just before the quarter-hour mark to bring his side back level.
However, Tyrone's response was instant with Lee Brennan hitting 1-1 in the space of ninety-seconds and when Conor Meyler followed up with a second goal, the O'Neill County were in control.
McNulty and Armagh's Ethan Rafferty swapped points before Kieran McGeary put Tyrone 2-6 to 1-1 ahead at the break.
Armagh were much more lively after the resumption and outscored Tyrone by 0-5 to 0-2 in the first ten minutes of the second half.
Cathal McShane opened the second half scoring for Tyrone before Ciaran O'Hanlon and Rafferty replied for Armagh. Meyler was on target for Tyrone before three successive Armagh points had their supporters in good voice. Ryan McShane and Rafferty (2) were in target, to leave the score 2-8 to 1-6.
Tyrone needed a score and they got the next two from McNulty and Brennan before Armagh were denied a goal when Sean Fox made a great save from Ryan McShane.
Rafferty and Jack Grugan narrowed the gap to five again before Tyrone responded once more through Brennan and Mark Kavanagh.
Armagh grabbed a consolation goal in injury time when Grugan blasted home.
Tyrone - S Fox; R Mullan, P Hampsey, F McGarrity; C McLaughlin, R Brennan, K McGeary (0-2); F Burns, C McShane (0-2); C Meyler (0-1), M Kavanagh (0-1), M Walsh; L Brennan (1-2), D McNulty (0-4), R McGlone (0-1). Subs: R Kelly for McLaughlin (BC), M Cassidy for Mullan (BC), C Byrne for McGarrity, D Kavanagh for McGlone.
Armagh - B Hughes; G McCabe, S Heffron, J Cosgrove; F Burns, D O'Neill, D Nugent; C O'Hanlon (0-1), E Rafferty (0-5); G Mackin, C Comiskey, C Mackin; A Nugent (1-0), C McKenna, R McShane (0-1). Subs: N Grimley for McKenna, S Connell for Burns, P Campbell for O'Neill, M Murphy for G Mackin, J Grugan (1-1) for C Mackin, C Martin for Comiskey.
Ref - S Laverty (Antrim)