Donegal will have the bragging rights over Tyrone ahead of their championship encounter in two weeks' time after getting the victory in Ballybofey.
They also needed the points to remain in Allianz League Division 1 and can head to Kerry next weekend knowing that their status in the top flight is safe.
A second goal early in the second half by Jamie Brennan put them on their way and although Tyrone threatened on a couple of occasions, the home side always had the upper hand.
Both sides were short of some regulars with Patrick McBrearty, Michael Langan and Odhrán McFadden Ferry absent for Donegal while Peter Harte and Cathal McShane were notable Tyrone absentees.
With Mayo defeating Galway earlier in the day, this game became a real contest with relegation a big fear for Donegal, while Tyrone were looking both up and down the table.
They said it would be cagey and that's how it worked out with defences packed from the start.
Donegal owned the ball for the first minute and a half with Tyrone not getting a touch as Jamie Brennan lofted the opening score with his left. Brennan also added the second after Neil McGee broke up a Tyrone attack with Oisin Gallen providing the assist.
Liam Rafferty got Tyrone on the board on five minutes but immediately, Hugh McFadden found Michael Murphy with a long pass and Murphy could have taken a mark but played on and fired over with his left.
Conall McCann cut the lead from a mark before Donegal hit the opening goal and it was a good move with Peadar Mogan starting and finishing the move. He combinned with Niall O'Donnell before cutting through and firing past Niall Morgan.
Frank Burns had Tyrone's third point from a mark before they got level with a very fortuitous award of a penalty. A high ball into the Donegal goal saw Conor McKenna fall to the ground.
Stephen McMenamin was closest to him, but it looked very soft. From the penalty Darren McCurry drilled home.
Niall O'Donnell edged Donegal back in front before the water break but Mattie Donnelly levelled again on the restart.
Then Donegal hit a small purple patch with four points in three minutes. Ciaran Thompson set them in motion from a free after a foul on Niall O'Donnell. Ryan McHugh, O'Donnell and McHugh again added points in quick succession with Jamie Brennan denied a goal by Niall Morgan.
Liam Rafferty and Michael McKernan cut the deficit to two on the half hour while Michael Murphy completed the first half scoring, firing over a free after Oisin Gallen was fouled.
The lead was down to one inside two minutes of the second half with quick fire points from Kieran McGeary and a Darren McCurry free.
Donegal struck for a second goal on 39 minutes with Ryan McHugh and Michael Murphy involved before Jamie Brennan slotted home.
Jamie Brennan won two frees for Michael Murphy to point either side of a Niall Morgan '45' to leave Donegal ahead 2-11 to 1-9 by the 45th minute.
Conor McKenna, back from Australia, got his first point for the Red Hands. Ryan McHugh hit a glorious point but Darren McCurry responded in kind to leave four in it at the second half water break.
Michael Murphy fired over a free from 49m and Ciaran Thompson stretched the lead to six from another free. Conor McKenna and David Mulgrew cut the lead with five minutes left.
There was still time for a dramatic finish. Caolan McGonagle and Murphy pushed Donegal six ahead but Conor McKenna struck for a cracking goal. But it was not enough and Andrew McClean added an insurance point in the final seconds.
Tyrone finished with 13 men, losing Kieran McGeary and Rory Brennan in the final minutes.
Scorers - Donegal: Michael Murphy 0-06,5f; Jamie Brennan 1-02; Peadar Mogan 1-00; Ryan McHugh 0-03; Niall O'Donnell, Ciaran Thompson (2f) 0-02 each; Caolan McGonagle, Andrew McClean 0-01 each.
Tyrone: Conor McKenna 1-02; Darren McCurry 1-02,1-00pen,1f; Liam Rafferty 0-02; Niall Morgan (45), Kieran McGeary, Michael McKernan (m), Matthew Donnelly, Conall McCann (m), Frank Burns (m), David Mulgrew 0-01 each.
Donegal: Shaun Patton; Eoghán Bán Gallagher, Neil McGee, Stephen McMenamin; Ryan McHugh, Paul Brennan, Jeaic Mac Ceallabhui; Hugh McFadden, Caolan McGonagle; Peadar Mogan, Niall O'Donnell, Ciaran Thompson; Jamie Brennan, Michael Murphy, Oisin Gallen.
Subs: Andrew McClean for Gallen 45; Jason McGee for H McFadden 55; Dáire Ó Baoill for Mac Ceallabhui 62; Paddy McGrath for P Brennan 65
Tyrone: Niall Morgan; Liam Rafferty, Ronan McNamee, Rory Brennan; Tiarnan McCann, Kieran McGeary, Michael McKernan; Padraig Hampsey, Frank Burns; Matthew Donnelly, Conor McKenna, Darren McCurry; Niall Sludden, Conall McCann, Conor Meyler.
Subs: David Mulgrew for Sludden ht; Michael O'Neill for Burns 46; Ronan O'Neill for C McCann 47; Ben McDonnell for Hampsey 63;
Referee: Jerome Henry (Mayo)