Steven McDonnell brought Armagh back from the brink to send a drama-packed Ulster Football Championship final to a replay with a scoreline of Tyrone 0-14 Armagh 2-8.

McDonnell banged home a goal two minutes from the end to rescue the holders, just when it looked as if a virtuoso display from Stephen O'Neill had earned Tyrone an 11th provincial title.

O'Neill scored 10 points in a sparkling exhibition of top drawer finishing, but in the end, he and his Red Hand colleagues will have to do it all again in a fortnight, back at Croke Park.

Both sides squandered early chances, with two of the game's top attackers, Peter Canavan and Steven McDonnell, the major culprits. And it wasn't until the tenth minute that O'Neill opened the scoring.

He was to score all five of the Red Hands' first half points, easily the most effective attacker on the field. Full back Chris Lawn completely eclipsed Armagh full forward Ronan Clarke, and the Armagh forward unit misfired throughout the first half.

Nevertheless they were just a point behind by the 33rd minute, after Aaron Kernan had added a 13 metre free to points from Steven McDonnell and Oisin McConville.

Orchard midfielder John Toal was stretchered off with a leg injury late in the half, and it was O'Neill who finished off a move involving Brian McGuigan and Peter Canavan to give Tyrone a 0-5 to 0-3 interval lead.

O'Neill continued to torment marker Francie Bellew, hitting another coupel of gems as Tyrone eased into a double scores lead, 0-8 to 0-4, by the ninth minute of the second half.

Two minutes later, however, Armagh were level. McDonnell for once got clear, but his shot was superbly saved by John Devine, but Oisin McConnell seized upon the rebound to blast to the net from close range. McDonnell tagged on a free and suddenly the sides were locked together on 0-8 to 1-5.

Brian Dooher, Conor Gormley and Sean Cavanagh all hammered over points to put the Red Hands back in the driving seat, and at 0-14 to 1-7 in the 68th minute, they looked home and dried.

But once again Armagh's legendary instinct for survival kicked in, and when Oisin McConville crossed from the right, McDonnell collected, turned and hit the net.

Kieran McGeeney caught the kick-out and sent Paul McGrane through for the equalising point, and Armagh survived.

Tyrone: J Devine, R McMenamin, C Lawn, S Sweeney, D Harte, G Devlin, P Jordan, C Gormley (0-1), S Cavanagh (0-1), B Dooher (0-2), B McGuigan, M Penrose, P Canavan, S O'Neill (0-10, 4 frees), E McGinley.

Subs: O Mulligan for Penrose, M Harte for Canavan, Joe McMahon for D Harte

Armagh: P Hearty; A Mallon, F Bellew, E McNulty, A Kernan (0-1, f), K McGeeney, A O'Rourke; J Toal, P McGrane (0-1), M O'Rourke, T McEntee, O McConville (1-1), S McDonnell (1-2, 1 f, 1 '45'), R Clarke (0-1), B Mallon (0-1).

Subs: P McKeever for M O'Rourke, P Loughran for Toal, J McEntee (0-1) for T McEntee, M Mackin for B Mallon, C McKeever for Kernan

Referee: P McEnaney (Monaghan).