Armagh have ended Tyrone’s defence of the All-Ireland after winning by 1-16 to 1-10 in a frantic qualifier at the Athletic Grounds.
Aidan Nugent cancelled out Conor McKenna’s early goal for Tyrone as Armagh led by 1-6 to 1-5 at half-time.
Armagh powered clear in the second half and led by six with 10 minutes to play.
There were nine minutes of injury-time following lengthy treatment for Connaire Mackin but Kieran McGeeney’s men held on for a famous victory.
Armagh will face one of the four losing provincial finalists – Limerick, Kildare, Roscommon or Donegal – in a bid to reach the All-Ireland quarter-finals as they bid to claim a second Sam Maguire on the 20th anniversary of their only previous triumph.
Goal action in first half
At a capacity Athletic Grounds, with a superbly-respected minute’s applause in memory of the late Michaela McAreavey pre-match and also in the 27th minute, it was McKenna who struck first with a goal inside two minutes.
Michael McKernan slalomed his way through the Armagh defence and although Ethan Rafferty saved his initial shot, Peter Harte found McKenna with the rebound and the forward made no mistake.
Tyrone almost netted a second goal when Michael O’Neill’s fisted effort looked like it would land over the line only for a back-tracking Rafferty to push the ball to safety.
Armagh, who had wasted earlier chances through Stefan Campbell and Aidan Nugent, suddenly hit through the latter before Conor O’Neill popped over the Orchard County’s second point.
McCurry nudged the Red Hands further ahead before Rafferty scored a superb point after making his way out of goals and splitting the posts with a fine effort.
The Athletic Grounds exploded in the 15th minute when Nugent skipped inside Tyrone’s championship debutant corner-back Peter Teague and his low effort beat Niall Morgan at the near post.

To add insult to injury Morgan missed his second 45 of the match and Armagh’s lead was extended to three points on 20 minutes when Jason Duffy popped over a well-taken point.
It could have been even better for Armagh, but a combination of good goalkeeping and a lack of a clinical edge kept Tyrone in touch.
The Orchard County split open the Tyrone defence and Campbell found Nugent from close range but Morgan raced out to dent the full-forward his second of the game.
Moments later Kieran McGeeney’s side spurned a second opportunity when Stephen Sheridan powered an effort over the bar despite having a sight on goal, and the missed chances gave Tyrone a glimmer of hope when the game easily could have been put to bed.
McCurry hit the Red Hands’ first point in 15 minutes and quickly doubled up with a second, and Tyrone went in one point behind at the break when the talismanic full-forward popped over a free with the final kick of the half.
Armagh surge clear
After Rian O’Neill and Rory Grugan stretched Armagh’s lead early in the second half, Tyrone’s half-time substitute Richie Donnelly was shown a black card for tugging the shirt of Jarlath Og Burns.
McCurry’s free, his fifth of the game, was immediately cancelled out by another O’Neill strike as Tyrone were returned to their full compliment.
Rafferty and Campbell both kicked superb solo scores before O’Neill punched over to send Armagh six clear and give the home crowd a further boost.
McCurry’s mark put a end to the Orchard County’s flow, and some heroic defending by Mackin stopped Tyrone a clear goal opportunity. After Rafferty was caught upfield the white shirts came streaming forward but O’Neill’s pass was plucked out of the air by Mackin to deny Donnelly a tap-in at the back post.

Conor Turbitt capitalised with a composed finished to restore Armagh’s six-point lead with 10 minutes to play, and Donnelly pulled one back before there was a lengthy delay as Mackin received treatment following a heavy collision.
When play resumed Campbell split the posts with a superb point, but Con Kilpatrick stuck in nine minutes of injury-time to give the holders hope.
Andrew Murnin popped over two points to put six between the sides with four minutes to play and the hosts controlled possession in the closing moments as the full-time whistle sparked wild celebrations.
Armagh: E Rafferty (0-2); J Morgan, A Forker, C O’Neill (0-1); A McKay, G McCabe, J Og Burns; S Sheridan (0-1), B Crealey; R Grugan (0-1), S Campbell (0-2), P Burns; A Nugent (1-1), R O’Neill (0-4, 3f), J Duffy (0-1).
Subs: C Mackin for P Burns ’18, C Turbitt (0-1) for C O’Neill HT, A Murnin (0-2) for J Duffy ’59, J Hall for A Nugent ’59, M Shields for C Mackin ’67, R McQuillan for R Grugan ’70+3.
Tyrone: N Morgan; P Teague, R McNamee, P Hampsey; M McKernan, P Harte (0-1), R Brennan; C Kilpatrick (0-1), F Burns; C Meyler, M O’Neill, N Sludden; D McCurry (0-7, 5f), M Donnelly, C McKenna (1-0).
Subs: K McGeary for P Teague ’30, R Donnelly for N Sludden HT, D Canavan for F Burns ’50, C McShane for M Donnelly ’55, M McGleenan for M O’Neill ’70+4.
Referee: David Coldrick (Meath)