Donegal edged out Tyrone in a breathtaking extra-time thriller at Celtic Park to go through to an Ulster SFC final meeting with Armagh on 12 May.

An epic tie in Derry city enthralled a crowd of 14,714, with Jim McGuinness once again working the oracle as his side came late to edge out their great rivals.

Tyrone held the edge for lengthy spells, but the sides were level on nine occasions, before Tir Chonaill produced a strong finish.

Paddy McBrearty returned to the action after being substitute to kick two crucial scores to break the hearts of Tyrone supporters.

Jason McGee's towering performance in the latter stages of the game helped his side get on top of a Red Hand side that had to go to extra-time for the second time in a week, and in the end it proved too much.

The pre-match loss of goalkeeper Shaun Patton robbed Donegal of a kick-out specialist and key element in the McGuinness strategy, with Gavin Mulreany coming in to deputise, while Tyrone welcomed back Conn Kilpatrick, Cathal McShane and Mickey O’Neill in late changes to their starting line-up.

Tyrone conceded the opposition kick-out, allowing Donegal to build from deep for Niall O’Donnell’s early score, but they were ahead by the tenth minute, Darren McCurry and Darragh Canavan on target from frees.

With Mattie Donnelly constantly probing from deep, the Red Hands had Donegal pinned back in their own half for sustained spells, the strong press preventing dynamic wing backs Ryan McHugh and Peadar Mogan from making their trademark offensive runs.

But Oisin Gallen and Daire O Baoill kept them very much in touch, and Ciaran Thompson steered over a brilliante score despite the pressure of two defenders.

But their finishing was less than efficient otherwise, and a rash of wides curtailed their efforts.

And the Red Hands eased two points clear through Seanie O’Donnell and Ciaran Daly, who sliced over a delightful effort from wide on the right, after being picked out by goalkeeper Niall Morgan’s searching pass.

The 'keeper also hit the target from a free, and his restarts were excellent. When he varied to go long, Brian Kennedy fetched on the opposition 45 metre lien to send Cathal McShane in for the sore that sent Tyrone in with a 0-08 to 0-05 interval lead.

Donegal came out for the second half a transformed side, with midfielder Jason McGee charging through to pick off a couple of points in the opening five minutes.

Energy levels were significantly risen as they blunted Tyrone’s press, and a superb move involving Caolan McGonagle, Mark Curran and Peadar Mogan ended with O’Donnell popping over a delightful score.

Curran and McHugh were hurting the Red Hands with their overlapping runs, while centre back McGonagle pressed through the middle, and now Donegal were looking more like the side that had shocked defending provincial champions Derry at the same venue eight days earlier.

Daire O’Baoill broke tackles to bring the sides level in the 48th minute, and a Tyrone attack starved of possession was growing increasingly frustrated.

Nevertheless Morgan kept their noses in front with a couple of long range scores, and Ciaran Daly restored the two points advantage.

A turnover provided a further momentum shifter as Canavan hoisted a long range point, and the gains earned by Donegal had been wiped out in the space of two minutes.

However, a gripping contest was deadlocked again by the 55th minute as Gallen tapped over a free

Michael Langan and McGee now edged the midfield battle over Brian Kennedy and Conn Kilpatrick, but Morgan was still able to launch attacks with his precision restarts, creating scores for McKernan and Canavan.

But deep into stoppage time, an intense spell of pressure finally gave Donegal what they so desperately needed, an equaliser from full back Brendan McCole to tie it up at 0-14 each, turning the rebound over the bar after Morgan had saved from Aaron Doherty.

In to extra-time, and Jeaic McKelvey fisted Donegal for the first time since the ninth minute, but the drama continued as their opponents wrested back the lead through McKernan.

They were level for the ninth time before Niall O’Donnell surged through to punch over the lead point, sending Donegal in at the break with a 0-17 to 0-16 advantage.

Paddy McBrearty sealed the win to produce the biggest roar of the day.

McGuinness' side survived one more aerial assualt and the final whistle came after 90 enthralling minutes of play.

Donegal: G Mulreany; M Curran, B McCole (0-01), C Moore; R McHugh, C McGonagle (0-01), P Mogan (0-01); J Magee (0-02), M Langan; S O’Donnell (0-01), C Thompson (0-02, 1f), D O Baoill (0-02); P McBrearty (0-02, 1f), O Gallen (0-03, 3f), N O’Donnell (0-02).

Subs: A Doherty for McBrearty (h-t), J Brennan for O Baoill (49), J McKelvey (0-01) for Curran (74), McBrearty for Doherty (71), O Baoill for Moore (71), Doherty for Gallen (81),

Tyrone: N Morgan (0-03, 3f); C Devlin, P Hampsey, M McKernan (0-02); S O’Donnell (0-02), M Donnelly (0-01), N Devlin; B Kennedy, C Kilpatrick; C Daly (0-02), K McGeary, M O’Neill; D McCurry (0-02, 2f), D Canavan (0-04, 1f, 1m), C McShane (0-01).

Subs: A Clarke for C Devlin (40), B Cullen for McGeary (62), R Canavan for O’Neill (75), A Donaghy for McShane (87), C Donnelly for Kilpatrick (88)

Referee: B Cawley (Kildare).