Tyrone 1-12, Armagh 1-12 (full-time)
A heart-stopping finish at Clones, and Tyrone and Armagh will have to meet again at Clones next Sunday to decide who goes through to the Ulster Football final.
This is what championship football is all about, the sides level on no less than 10 occasions in a thumping encounter which had the crowd of 31,937 in raptures from start to finish.
In the end, it was almost fairy-tale stuff, with Sean Cavanagh, making his first senior start for the Red Hands, in either league or championship, thumping home a dramatic equalising goal a minute from normal time.
Earlier Steven McDonnell thought he had won it for the Orchard with a goal 14 minutes into the second half which put a massive four points between the sides.
But Cavanagh, a late replacement for the injured Brian McGuigan, had other ideas. This was his day.
Oisin McConville's two early points sparked Tyrone into action, with Stephen O'Neill converting a free, and attacking defender Ryan McMenamin pressing upfield to shoot a point.
Teenage debutant Sean Cavanagh cut in from the right to fist Tyrone's lead point, but the accurate McConville soon had Armagh back on level terms from a free.
Kieran McGeeney, deployed in his more traditional centre back role after playing the league as a third midfielder, showed his worth with two superb tackles on Stephen O'Neill.
It was point for point in a tense, absorbing contest, Kevin Hughes swapping scores with McConville, then Peter Canavan, with his first score of the afternoon, from a free.
Paddy McKeever landed an Armagh free, Canavan steered over a '45' at the other end, but almost inevitably, McConville, with a brilliant acute angle free his fifth score of the contest, had the sides level for the sixth time.
McConville had been the only real attacking threat for Armagh, with Conor Gormley, in his first championship game, blotting out the threat of Diarmuid Marsden, but Armagh defenders Enda McNulty and McGeeney were enjoying equal success in thwarting the best efforts of Canavan and Allstar O'Neill.
McMenamin and McConville swapped points early in the second half, but when McConville and John McEntee were on target for Armagh in thy eighth minute, it was the first time that more than a point had separated the sides.
Canavan had them level for the ninth time with two frees, but in the 14th minute of the half, Armagh struck a mighty blow.
John Toal thumped a long ball into the danger area. The predatory McDonnell failed to collect cleanly, but managed to boot the bobbling ball to the net from close range.
Substitute Ronan Clarke quickly tagged on a point and suddenly the Orchard county led by four, Tyrone in deep trouble.
But what resolve and courage they showed to pull it out of the fire.
Declan McCrossan and Cavanagh fired over points, and it was 19-year-old Cavanagh who emerged as the goal-scoring hero, taking a long delivery from Colin Holmes to swivel and blast home from close range with just a minute to play.
Tyrone: P Ward, C Gormley, C Lawn, B Robinson, R McMenamin (0-2), S Teague, C Gourley, C McAnallen, C Holmes, B Dooher, S O'Neill (0-1), G Cavlan, S Cavanagh (1-2), K Hughes (0-2), P Canavan (0-4).
Subs: D McCrossan (0-1) for Teague, S McCallan for O'Neill, Pascal Canavan for Cavlan, R Thornton for Hughes
Armagh: B Tierney, E McNulty, J McNulty, P McCormack, A O'Rourke, T McEntee, A McCann, J Toal, P McGrane, P McKeever (0-1), J McEntee, O McConville (0-8), S McDonnell (1-1), D Marsden, K McGeeney.
Subs: R Clarke (0-2) for T McEntee, F Bellew for McCormack, P Loughran for Marsden
Referee: J Bannon (Longford).