An injury-time free-kick from Peter Canavan saw Tyrone through to the All-Ireland SFC final as the Red Hand men beat Ulster rivals Armagh by 1-13 to 1-12 in a pulsating game at Croke Park today.

This time it was a belter. An absolute cracker and a privilege for the 65,858 lucky fans who were fortunate enough to be in Croke Park for the third championship meeting of Tyrone and Armagh.

This breathtaking encounter swung one way, then the other, then back, but it was Tyrone who won when it mattered most.

The Orchard men may have stolen a draw in the Ulster final and sneaked a win in the replay, but it's Tyrone who will face up to champions Kerry in the big one, the All-Ireland final, on September 25.

Tyrone were two to the good by the eighth minute, with Owen Mulligan and Sean Cavanagh both on target. However, they failed to maintain their early momentum and Armagh profited from a quite remarkable rate of possession turnovers.

They found Joe McMahon and Ryan McMenamin in splendid form in the Red Hand full-back line, however, and a Steven McDonnell point was the only score they managed in the opening quarter.

The sides were level by the 23rd minute, though, when Oisin McConville converted a free and McDonnell and hit the target.

Goalkeepers Paul Hearty and Pascal McConnell kept their sides in the game with splendid saves from Ryan Mellon and Ronan Clarke respectively, and a gripping encounter was brought level again when O'Neill and McDonnell swapped points.

O'Neill blasted home a superb penalty after he had been fouled by Paddy McKeever in first-half stoppage time, before skipper Kieran McGeeney brought Armagh back to within two points.

Tyrone led by 1-4 to 0-5 at the break, but Armagh turned up the heat on the restart. McDonnell and McConville, with two frees, brought them level by the 47th minute.

Then it was Tyrone's turn to prevail, points from inspirational corner-back Ryan McMenamin, O'Neill and Canavan restoring their three-point advantage.

This was gripping, enthralling and truly wonderful sporting action, and when McDonnell squeezed home a goal 11 minutes from the end, Armagh were back in front.

Ronan Clarke gave them a two-point cushion, but Tyrone had more to offer.

Sean Cavanagh and substitute defender Shane Sweeney, had Mickey Harte's charges level again, before Canavan stepped up to send the pressure free cleanly between the posts.

Tyrone: P McConnell; R McMenamin 0-1, J McMahon, M McGee; D Harte, C Gormley, P Jordan; B Meenan, S Cavanagh 0-2; B Dooher, B McGuigan, E McGinley; R Mellon, S O'Neill 1-4 (1 pen, 3f), O Mulligan 0-3 (2f).

Subs: P Canavan 0-2 (1f) for McGinley, C Holmes for Meenan, C Lawn for Jordan, S Sweeney 0-1 for Harte.

Armagh: P Hearty; A Mallon, F Bellew, C McKeever; A Kernan 0-2 (2f), K McGeeney 0-1, A O'Rourke; P Loughran, P McGrane; M O'Rourke, P McKeever, O McConville 0-3, (3f); S McDonnell 1-3, R Clarke 0-1, B Mallon 0-1.

Subs: T McEntee for Loughran, J McEntee for B Mallon, E McNulty for McGeeney, A McCann for A O'Rourke.

Referee: P Russell (Tipperary).