Donegal stayed on course for back-to-back Ulster Championships after a two-point win over Tyrone at Clones.
The holders were a point down at half-time in the semi-final but surged clear with five points in a row as the Red Hands failed to score for 32 minutes.
Tyrone were three points down but almost forced a replay when Donegal keeper Paul Durcan made a superb late save to deny Martin Penrose a goal.
Donegal will face Down in the Ulster final on Sunday 22, July.
They will be attempting to retain the provincial title for the first time in their history.
The first half was a cagey, nip and tuck affair which Tyrone edged by six points to five thanks to a fine stoppage-time score from play by Martin Penrose.
There was never more than a single point in it as the 2010 winners attempted to get the provincial title back from Donegal.
Tyrone scored one free in the first half, a long-range effort by Joe McMahon, and added scores from play through Stephen O'Neill, a fisted effort by Mark Donnelly, full-back Conor Clarke and Sean O'Neill.
Donegal registered points from two Michael Murphy frees from the left, one from the right by Colm McFadden and had two scores from play by Mark McHugh and Patrick McBrearty.
Tyrone briefly held a two-point advantage early in the second half thanks to another long free by McMahon but the contest was tied again at nine apiece after Tyrone corner-back Dermot Carlin advanced to score from play and Donegal's tally was boosted by two Rory Kavanagh points and a free by Colm McFadden.
Gradually, though, Donegal were getting on top and Tyrone were clearly feeling the heat.
Ryan Bradley's point from play edged Jim McGuinness's men ahead and the holders led by two when Murphy landed another free from the left.
A poor clearance by Tyrone was punished as centre-back Karl Lacey scored and the gap was four when McFadden pointed from play.
McFadden was sent-off in stoppage-time for a second yellow card infringement and Stephen O'Neill made it a three-point game with the free.
Tyrone needed a goal and they went close when a shot from Penrose was diverted on to a post by keeper Durcan's outstretched foot.
Conor Gormley tried by float the 45 into the danger area but the ball went over for a point and that was game over.
Tyrone scorers: Joe McMahon 0-2, Stephen O'Neill 0-2, M Donnelly 0-1, Clarke 0-1, Sean O'Neill 0-1, Penrose 0-1, Carlin 0-1, Gormley 0-1
Donegal scorers: McHugh 0-1, Murphy 0-3, McBrearty 0-1, McFadden 0-3, Kavanagh 0-2, Bradley 0-1, Lacey 0-1