Donegal looked like they were easing their way to victory but Tyrone’s Martin Penrose had other ideas as he closed down on goal into injury time.
However an outstretched foot from the Four Masters man saved Donegal from a replay.
It was no more than Jim McGuinness’ side deserved as they buckled down against a determined Tyrone side who battled for everything.
Played before 17,031 fans, Donegal soaked up the pressure and a strong breeze from the first half and gradually got on top in the second half.
Their controlled second half display showed that this panel are learning and didn’t press the self-destruct button.
Tyrone will be one of the toughest tests Donegal will have all year and it will be one McGuinness and Rory Gallagher will have learned a lot from.
Donegal won the toss and decided to play against the strong wind in the first half.
After just two minutes Donegal were dealt a major blow when Neil Magee through injury and he was replaced by David Walsh.
Donegal settled and Mark McHugh scored a wonderful opening point after just three minutes.
Tyrone leveled things on five minutes with a successful long range free from Joe McMahon.
Veteran Stephen O’Neill added another a minute late to put Tyrone in front.
Michael Murphy got his first chance from a free after eight minutes and didn’t fluff his lines.
At this stage Tyrone looked sharp and were playing Donegal at their own game by putting them under pressure in possession.
Tyrone went 0-3 to 0-2 when Donnelly closed down on goal but opted for a point.
Joe McMahon had a golden chance for a goal for Tyrone but Paul Durcan puled off a fine stop after 16 minutes.
At this stage Tyrone looked the more settled and were finding answers to break through Donegal’s blanket defence.
McBrearty leveled things again for Donegal with a fine point after he was fed by Neil Gallagher.
After missing a couple of possible chances, Conor Clarke scored a fine point to put Tyrone ahead again on 25 minutes.
Letterkenny’s Rory Kavanagh missed a chance a minute later to level the scores when he pulled his shot wide.
Donegal got a free and Murphy took Donegal’s first score since the 18th minute in the 29th minute to make it 0-4 to 0-4.
Tyrone were bringing the ball out of defence well and Donegal were unable to get the tackle in early.
Sean O’Neill put Tyrone in front again but Ryan Bradley won a free and Colm McFadden registered his first point as the half-time whistle drew close.
Penrose scored a fine point to put Tyrone’s noses in front two minutes into injury time.
Joe McMahon gave Tyrone a two point cushion when he scored form a long range free a minute into the restart.
However a fine reply from Kavanagh leveled the score before Tyrone pressed ahead gain.
The game was beginning to come to life and a high ball into Colm McFadden who was fouled.
The Creeslough man converted the resulting free himself to draw the sides level again.
McFadden drew a number of tackles before the ball found its way to Ryan Bradley and the Buncrana powerhouse put Donegal in front 0-9 to 0-8.
Both sides were fouling heavily as the game of cat and mouse continued.
Martin McIlhinney and Martin O’Reilly came on for Neil Gallagher and David Walsh as McGuinness sought to give his team an advantage in the 54th minute.
Stephen O’Neill blazed a close-range effort for Tyrone a couple of minutes later.
Michael Murphy was fouled and managed to shake off his injury to put the ball over the bar to give Donegal a two point advantage in the 60th minute.
Harte immediately brought in Brian McGuigan to salvage the game but could only watch as a poor kick-out form McConnell was picked up by Lacey to give Donegal a three point lead.
The light-bulb seemed to go on for Donegal as a steady build-up was finished when McFadden scored a route one point to make it 0-12 to 0-8 for Donegal.
Mickey Harte threw on another couple of subs including Niall McKenna in a bid to put scores on the board.
Donegal wore the clock down but there was an unfortunate end when McFadden was shown the line after an altercation off the ball.
Derry managed another point and Tyrone almost got through on good but Frank McGlynn managed to pull the ball away to safety.
Tyrone came again and Penrose looked like he had snatched a draw for Tyrone only for Durcan to pull off a terrific save.
It was the momentum and graft of Donegal which got them enough scores on the board in the second half which hauled them across the line.