Tyrone, their preparations ravaged by a Covid-19 outbreak, stunned hot favourites Kerry to reach the 2021 All-Ireland final after an extra-time victory in Croke Park.

Conor McKenna fired home two goals, with super-sub Cathal McShane doing immense damage on his introduction as Tyrone claimed an extraordinary victory after a tumultuous month.

The win was primarily built on defence, their backs repeatedly smothering Kerry's heralded attack, with both Sean O'Shea and David Clifford being left to carry the vast bulk of the scoring load. An injury to the latter in the dying seconds of normal time was a critical blow to the Munster champions in extra-time.

Tied at 2-11 to 0-17 at the end of normal time, Tyrone started extra-time with a killer surge, McShane popping over two points against the now struggling Jason Foley before the critical strike, McKenna drilling the ball to the net to establish a five-point lead.

Kerry, their attack almost neutered by the loss of Clifford, responded well, chipping away at the lead but at the finish they found themselves one point short, Tommy Walsh, under pressure on the kick, pulling a late chance wide and sending the Tyrone crowd into raptures.

Kerry started reasonably enough, establishing an early stranglehold in the middle third, Clifford swinging over a couple of points.

However, any notion that Tyrone would turn up sluggish and under-the-weather was scotched in the first quarter and the two teams were going tit-for-tat on the scoreboard before long.

Kieran McGeary was a pivotal presence for Tyrone

After drawing level with a Morgan free and a Mattie Donnelly mark, the latter's only score over the 90 minutes, Peter Harte raided forward to nudge them in front.

Though struggling to win possession on kickouts, Tyrone settled into a well-organised defensive pattern, racking up the turnovers and attacking the open space on the counter.

Their much touted fluidity came to the fore, with backs and forwards essentially interchangeable. Ronan McNamee and Michael McKernan both surging forward from the full-back line to clip over points. By the time Padraig Hampsey joined the scoring party just before half-time, the entirety of Tyrone's full-back line and goalkeeper had scored, together accounting for 0-05 of their 1-07 tally at the break.

Their nominal half-backs Harte and the tireless Kieran McGeary - All-Ireland winning U21 captain from 2015 - caused constant trouble with their raids forward.

Kerry, meanwhile, began to get tangled in the spider's web of Tyrone's defence, running down blind alleys and getting wrapped up in the contact.

Referee David Coldrick's laissez faire, defender-friendly interpretation of the tackle area didn't exactly suit them in the circumstances and their forwards spent much of the first half with their arms out-stretched in plaintive pose - their supporters likewise.

However, they had their own decision-making to blame, in large part.

Peter Keane's side had been banging in goals at a rate of knots all year - including six against this opposition in Killarney in the league - and were hungry for more here but struggled to ferret their way through Tyrone's well-manned rearguard.

The one time they did break through, the Munster champions frittered away the chance through careless decision-making. After an intricate move, Paul Geaney rounded Morgan and, at that point off-balance, opted to hand-pass to the waiting Stephen O'Brien rather than prod the ball in himself. Alas, O'Brien had plonked himself inside the square and as soon as he palmed the ball home, the crowd and officials knew something was amiss. No goal.

Instead, it was Tyrone who snaffled the game's opening goal. With far less possession, but far more room to work with on their forays forward, Tyrone launched a telling counter, Peter Harte running deep into the Kerry defence, feeding Niall Sludden on the overlap out wide, the latter popping inside to McKenna who coolly slipped it past Shane Ryan to the net.

By half-time, only David Clifford and Sean O'Shea had scored for Kerry and they trailed by one. The half concluded with an extraordinarily long range free from Morgan, converted from the more or less the halfway line.

The third quarter began more brightly for the favourites, Killian Spillane injecting a bit more vim into their attacks, with an early black card for the industrious Sludden allowing more room to breathe.

With Tyrone down to 14, Kerry notched four points in a row, Paudie Clifford finally breaking the scoring monopoly of the D. Clifford/O'Shea axis in the 46th minute, leaving Kerry two ahead on 0-13 to 1-08.

The favourites continued to nurse that lead as the game turned increasingly tense and cagey. The two sides traded a brace of points over the subsequent 20 minutes. Darren McCurry, after a quiet first half, hit his stride, landing a couple of scores for the Ulster champions.

McCurry was black carded on the 59th minute, though Kerry didn't get much chance to profit from the situation, most of the allotted period taken up with a lengthy injury to Tiernan McCann after a clash of heads. That left us with a whopping nine minutes of injury-time at the end of normal time.

Leading by one point, with four minutes of said normal time left, the marauding Tom O'Sullivan lobbed over a score after Morgan intercepted an O'Shea pass inside to Clifford, punching as far as the 21 metre line - but the point came at a heavy cost for Kerry. Clifford came off worse after rising to contest the ball with the Tyrone keeper, requiring attention. Though he traipsed on til the end of normal time, he wouldn't appear for extra-time.

On 68 minutes arrived one of the game's decisive scores. With Kerry still clinging to a point lead but appearing increasingly hesitant, Tyrone surged forward on a counter.

Sean O'Shea struggles to escape Tyrone defence

Donnelly galloped through the centre, lifted over a handpass for raiding Darragh Canavan, the sub whacked his shot straight at Ryan, the ball rebounded and McShane reacted quickest to slap to the net. The Tyrone crowd, their belief steadily growing all game, fisted the air in unison and the stands reverberated.

Kerry reacted well to the jolt, O'Shea stroking a free to level it.

With nine minutes left on the clock, the injury-time was marked by long periods of possession football until McCurry, finding space on the Hogan Stand, appeared to have won it with a curling left-foot shot on 76 minutes.

However, we would see extra-time for the second time in two weeks. Clifford, hobbling a bit by now, cleverly manufactured a free and was able to swing over the equaliser.

He finished with eight points overall, most of it from play, but wouldn't get any more, Geaney - replaced earlier - returning in his place for extra-time.

It would be a bitter added period for Kerry, as McShane really began to roll, lobbing over two early points as his marker Foley started to cramp.

On the 76th minute, the exuberant Kieran McGeary looped a shot which appeared to be drifting wide, it dropped short, Jack Barry, tussling with his man, volleyed the ball straight down the throat of the waiting McKenna who lashed home his second score of the game - and second goal.

From a seemingly desperate position, Kerry rallied, Paul Murphy and Diarmuid O'Connor lobbing over fine score, though McShane pushed the lead out again with another score.

Attacking wise, Tyrone curled up a bit in the final quarter, failing to land another score and barely threatening aside from a Morgan 45.

But their defence, as it had throughout, held firm under heavy shelling. Scores from Paudie Clifford and Geaney weren't enough as Kerry ended up one point short. For the second year running, they exit in a shock defeat.

And Tyrone, after a turbulent month - "a month of worry" according to their manager - reached an unlikely All-Ireland decider against Mayo on 11 September.

Kerry: Shane Ryan; Brian Ó Beaglaoich, Jason Foley, Tom O'Sullivan (0-01); Mike Breen, Paul Murphy (0-01), Gavin White; David Moran, Jack Barry; Dara Moynihan, Seán O'Shea (0-08, 6f, 1 '45), Stephen O'Brien; David Clifford (0-08, 2f) , Paul Geaney (0-01), Paudie Clifford (0-02).

Subs used: Killian Spillane for Moynihan (35), Gavin Crowley for Breen (49) Tommy Walsh for Moran (59) Adrian Spillane for Geaney (58) Diarmuid O'Connor (0-01) for O'Brien (58) Geaney for Clifford (70) Tadhg Morley for Ó Beaglaoich (70) Jack Sherwood for Barry (77) Graham O'Sullivan for Foley (80) Micheál Burns for O'Sullivan (86)

Tyrone: Niall Morgan (0-02, 1f, 1 '45); Michael McKernan (0-01), Ronan McNamee (0-01), Padraig Hampsey (0-01); Frank Burns, Kieran McGeary, Peter Harte (0-01); Brian Kennedy, Conn Kilpatrick; Conor Meyler, Michael O'Neill, Niall Sludden; Darren McCurry (0-04, 2f), Mattie Donnelly (0-01), Conor McKenna (2-00)

Subs used: Cathal McShane (1-03, 1f) for Kennedy (43) Tiernan McCann for O'Neill (56) Darragh Canavan for Sludden (64) Ben McDonnell for Kilpartrick (73) Liam Rafferty for Harte (76 mins) Mark Bradley for Sludden (76)