Donegal reached their first Ulster SFC final since 2006 with a three-point win over defending champions Tyrone at Clones.
Second-half goals from Colm McFadden and Dermot Molloy ended Tyrone’s bid to win a third successive provincial title.
The Red Hands held a 0-6 to 0-1 lead at one stage, but were squeezed out of the game by a tenacious Donegal, who brushed aside criticism of their defensive strategy to deservedly set up a meeting with Derry in the decider.
In front of a crowd of 18,536, Tyrone finished with 13 men after Kevin Hughes picked up a second booking 10 minutes from the end, and ‘Brick’ Molloy came off the bench to hit the decisive goal.
With Sean Cavanagh revelling in his favourite midfield role, Tyrone tested Donegal’s defensive system with direct and penetrative football in the opening stages.
Owen Mulligan, Cavanagh and Brian Dooher all hit the target, with wing back Philip Jordan hoisting a long-range effort for a 0-4 to 0-0 lead.
Michael Murphy, who started at wing forward, was switched to the inside line after 12 minutes as his side continued to search for an elusive opening score, which finally came in the 15th minute from teenager Paddy McBrearty.
Donegal’s packed defence could do nothing to counter accurate long-range striking, and Cavanagh exposed that weakness with a quality effort from distance, before Stephen O’Neill intercepted a stray clearance to slot a point for a 0-6 to 0-1 advantage.
But the men from the north-west adopted a more adventurous approach in the final 10 minutes of the half, and were rewarded with points from Kevin Rafferty, Colm McFadden and a wonderful long-range effort by Kevin Cassidy to cut the deficit to just two points at the break, 0-6 to 0-4.
Cassidy turned over possession to send Murphy in for a point, which was quickly cancelled out by Peter Harte’s converted 45.
Tyrone full back Joe McMahon, making his return from a broken jaw, was forced out of the game in the 48th minute after shipping a high challenge, with his brother Justin taking over.
And Donegal hit the front for the first time with a 56th-minute McFadden goal.
Karl Lacey made a searing run from deep to take Murphy’s pass, before transferring to McFadden, who stepped around Conor Gormley and beat Pascal McConnell from seven yards.
Tyrone midfielder Kevin Hughes picked up a second yellow card in the 62nd minute, but the Red Hands still managed to draw level through substitute Martin Penrose.
But it was Donegal sub Molloy who had the final say, finishing off a sweeping move involving Murphy and Karl Lacey with a clinically taken goal in stoppage time.
Tyrone: P McConnell, M Swift, J McMahon, R McMenamin, D Harte, C Gormley, P Jordan, K Hughes, S Cavanagh, B Dooher, B McGuigan, P Harte, O Mulligan, M Donnelly, S O’Neill.
Subs: M Penrose for Mulligan (51), T McGuigan for B McGuigan (62), A Cassidy for O’Neill (62), C Cavanagh for Dooher (68)
Donegal: P Durcan, K Lacey, N McGee, P McGrath, F McGlynn, A Thompson, K Cassidy, R Kavanagh, K Rafferty, M McElhinney, M McHugh, R Bradley, P McBrearty, M Murphy, C McFadden.
Subs: M Hegarty for McElhinney (23), L McLoone for Bradley (45), D Molloy for McLoone (62).
Referee: J McQuillan (Cavan).