Kerry 1-18 Tyrone 0-18
Kerry are through to their first All-Ireland SFC final in four seasons after producing a stirring second half performance to overcome the challenge of Tyrone in Croke Park.
The win sets up a fascinating showdown against five in a row chasing Dublin in three weeks' time.
Trailing by four points at the break, Kerry looked in deep trouble with Tyrone dictating the exchanges.
But the Munster champions were a transformed outfit after the break. They had drawn level by the 55th minute and a goal a minute later from Stephen O'Brien effectively sealed the win.
Tyrone managed just 0-3 from play in normal time in the second half and though they managed three more in injury time it wasn't enough to save the game.
David Clifford playing in his first All-Ireland semi-final underlined his class with a couple of wonderful strikes at the business end of the contest.
Now it looks as if the footballing stars have aligned perfectly for this most historic decider on the first Sunday in September.
Kerry, the traditional aristocrats of the game, taking on the current aristocrats who are within touching distance of sporting immortality.
Beating the county that went closest to winning the five-in-a-row while closing out their own drive for five would be particularly sweet for Dublin.
Equally the chance of stopping Jim Gavin's side achieving history would be just as significant for the Kingdom.
It was a disappointing end of the 2019 football season for Tyrone who haven't beaten Kerry, Dublin or Mayo – the country's three top rated teams in the last decade – in championship football since 2008.
Having contested last year's final this loss represents regression for Mickey Harte's side. They will wonder for a long time how it all went wrong in the last half of hour.
Predictably neither team lined out as selected. Kerry dropped their captain Gavin White with his place being taken by Brian O Beaglaoich while Tyrone made three predictable changes as Michael Cassidy, Richard Donnelly and Padraig Hampsey came into the team replacing Hugh Pat McGeary, Brian Kennedy and Darren McCurry.
The changes meant that Tyrone moved team captain Mattie Donnelly into their full forward line playing alongside Cathal McShane.
The latter was marked by Jason Foley while Tadgh Morley had responsibility for shadowing Donnelly and Paul Murphy acting as sweeper.
The first quarter resembled a field game of chess but Tyrone were scoring more freely from play kicking five points while Niall Morgan converted a 45 whereas Kerry were reliant on converted frees from David Clifford and Sean O'Shea for two of their first four points.
They were gifted another after a poor kick out from Niall Morgan which went straight to Paul Geaney.
But Clifford – who being marked by Tyrone's chief enforcer Ronan McNamee – hit the point of the half with brilliant effort from the Cusack Stand touchline.
Tyrone bombarded the Kerry full-back with long diagonal balls which as well as bypassing Paul Murphy put enormous pressure on Morley and in particular Foley and by the 25th minute McShane had hit three points from play as the Ulster side led 0-7 to 0-5.
Kerry weren't helped either by poor shooting they registered six wides in the half compared to two for Tyrone.
The Ulstermen opted not to press up on Shane Ryan's restarts and he managed to find a colleague with all but one of them whereas Morgan had early difficulties with two of his first three being intercepted. But after that early wobble his restarts found their target.
Kerry couldn't generate any momentum and were guilty of being repeatedly turned over in possession by the massed Tyrone defence and the Ulster side were full value for their interval lead of four points, 0-9 to 0-5.
But it was noticeable that the game was much less intense than the Dublin v Mayo showdown. And there was an alarming drop in the attendance with just 33,848 spectators which meant there was previous little atmosphere in the stadium.
Not surprisingly Kerry made changes at the break with Gavin White and Jack Sherood replacing Shane Enright and Adrian Spillane and a pointed free from Sean O'Shea left it a three point game after 37 minutes.
There was more a lot more urgency about the Kerry play compared to the first half and after Niall Sludden missed an easy chance for Tyrone Paul Geaney pointed at the other end.
McShane and O'Shea exchanged frees – the latter awarded after a completely unnecessary foul by Conor Meyler on the Kerry centre-forward.
Now it was Tyrone's turn to squander chances with McShane missing two – including one from s straight forward free and a 50 minute point from substitute Jack Sherwood made it a one point game.
Kerry then made an interesting tactical substitution with veteran Tommy Walsh replacing Jason Foley with Tadhg Morley taking over responsibility for marking McShane.
Tyrone were now making unforced errors and as the space began to open up Kerry finally found their rhythm. A brace of points from David Moran and David Clifford tied the contest after 55 minutes.
A minute later Kerry finally split the Tyrone defence with a three man move initially involving Sherwood and Paul Geaney and the latter's crossfield foot pass found Stephen O'Brien unmarked in the centre and he made no mistake from close range.
He added a point straight afterwards to give Kerry a four-point lead in a game which Tyrone had largely controlled until five minutes earlier.
Once they smelled victory Kerry looked a team reborn with David Clifford final breaking free off the shackles imposed by Ronan McNamee scoring two huge points while Geaney and O'Brien also added points from play as Tyrone's defensive system came apart.
With five minutes of normal time remaining Kerry were five points clear and though Tyrone did reduce the deficit to three during the six minutes of injury time they never looked like saving the game.
Peter Harte, whose failure to make an impact, was a key factors in Tyrone's demise did create one half chance but Shane Ryan saved comfortably.
The only blemish on their victory came at the death when Stephen O'Brien picked up a black card – his third of the season – which means he will miss the final unless he can successfully appeal against one of the cards.
Judging by the video footage of the incident which led to O'Brien being black-carded in the Super 8s game against Meath it looks virtually certain that this decision will be rescinded which will leave the influential Kenmare wing forward free to face Dublin.
Scorers: Kerry - S O'Shea 0-6, (5f , 1 45), D Clifford 0-5 (1f), S O'Brien 1-2, P Geaney 0-3, D Moran, J Sherwood 0-1 each. Tyrone - C McShane 0-7 (3f); M Donnelly, N Sludden, N Morgan (2 45) 0-2 each M McKernan, C McAliskey, R Donnelly, D McCurry, P Harte (1f) 0-1 each.
Kerry: S Ryan; J Foley, T Morley, T O'Sullivan; P Murphy, G Crowley, S Enright; D Moran, A Spillane, B O Beaglaoich, S O'Shea, S O'Brien; D Clifford, P Geaney, K Spillane. Subs: G White for Enright ht; J Sherwood for A Spillane ht. T Walsh for Foley (50), D Moynihan for K Spillane (56), J Lyne for Crowley (70 + 1), J Barry for O'Sullivan (70 +5).
Tyrone: N Morgan; R Brennan R McNamee, P Hampsey; K McGeary, C Meyler, M McKernan; C Cavanagh, P Harte, R Donnelly, F Burns, N Sludden, M Cassidy, C McShane, M Donnelly. Subs: C McAliskey for Sludden (52), T McCann for McGeary (58), D McCurry for Cassidy (65), B Kennedy for Cavanagh (69)
Referee: Maurice Deegan (Laois)