What's seldom was wonderful for Tyrone, who finally got the better of old foes Dublin in a competitive game, gaining slight revenge for last year's All-Ireland final defeat in the process.

Exactly six years to the day since previously beating the Dubs in the 2013 Allianz League, Mickey Harte's side finally came good again to blow this year's title race wide open and end Dublin's reign as champions.

Cathal McShane was terrific for the Red Hands and helped himself to 1-04 with a powerful display from full-forward, a feat that earned him the Man of the Match award.

It was doubly impressive from Tyrone as they played out the last 20 minutes or so with 14 men following Niall Sludden's dismissal.

They even outscored Dublin by a point in the remaining minutes as they clung on for a win that gives them a fighting shot at returning to the final.

Holders Dublin had hoped for a win to put one foot in the final themselves but now cannot reach the decider as Tyrone or Galway will be on at least nine points after their clash next week.

Dublin fielded a dozen of the side that overcame Tyrone by six points last September with the Red Hands retaining 10 of their team.

Rookie defender Cian O'Connor, David Byrne and Cormac Costello were the three alterations to Dublin's team from the decider.

Tyrone started strong in that final before being hauled back and losing by six points but kept the pressure on throughout this time.

They opened the scoring after just 23 seconds through Mattie Donnelly and took a fourth-minute Costello goal in their stride, getting back to level terms at 1-00 to 0-03 after just 14 minutes.

McShane, wearing number eight but stationed at full-forward and tracked by Byrne throughout, grabbed Tyrone's goal after 21 minutes.

Brothers Richard and Mattie Donnelly combined and McShane capitalised on a Byrne slip at the Hill 16 End to race clear and slide a deft low finish past Stephen Cluxton.

That put Tyrone 1-03 to 1-01 clear and they retained that two-point advantage at half-time with a 1-07 to 1-05 lead, leaving Dublin with plenty to think about.

Dublin were without both John Small and Costello by that stage following apparent hamstring and ankle injuries that forced their withdrawals.

Tyrone boss Mickey Harte, in his 300th game in charge, spoke beforehand about Tyrone's lack of physicality in attack in recent seasons and powerful duo McShane and Mattie Donnelly both profited up front.

Dublin hit seven first-half wides and were denied a 29th minute goal when Tyrone 'keeper Niall Morgan blocked Costello's drive.

McShane extended Tyrone's lead seconds into the second-half when he outfielded Byrne again and pointed, leaving three between them.

Dublin struck back with points from Brian Fenton and Dean Rock but Tyrone responded with scores from Richard Donnelly and Morgan.

It continued in that tit-for-tat scoring vein as both sides fought hard to claim an important win.

The game boiled over at times with Morgan booked for flooring Andrews with a huge hit, resulting in Andrews being replaced.

Sludden was dismissed for Tyrone in the 50th minute after a black card on top of an earlier yellow added up to a red card.

Tyrone, crucially, were still three points ahead with 15 minutes to go and were full value for their 1-12 to 1-09 lead.

They held on for a gutsy win despite Dublin throwing the kitchen sink at them late on with Ciaran Kilkenny and Colm Basquel both thwarted with goal attempts.

Tyrone: Niall Morgan (0-02, 0-02f); Ronan McNamee, Padraig Hampsey, Hugh Pat McGeary; Kieran McGeary, Frank Burns, Conor Meyler; Ben McDonnell, Brian Kennedy; Peter Harte (0-03, 0-02f, 0-01m), Niall Sludden, Richard Donnelly (0-02); Tiernan McCann, Cathal McShane (1-04, 0-01f, 0-02 mark), Mattie Donnelly (0-03).

Subs: Rory Brennan for McCann (12), Connor McAliskey for Burns (60), Colm Cavanagh for McNamee (62), Darren McCurry for Kennedy (70).

Dublin: Stephen Cluxton; Jonny Cooper, David Byrne, Cian O'Connor; James McCarthy, Cian O'Sullivan, John Small; Brian Howard, Brian Fenton (0-01); Niall Scully, Ciaran Kilkenny (0-02), Con O'Callaghan (0-01); Cormac Costello (1-00), Paul Mannion (0-04, 0-02f, 0-01m), Dean Rock (0-02, 0-02f).

Subs: Darren Daly for Small (31), Paddy Andrews (0-01) for Costello (35), Kevin McManamon for Andrews 48-f/t blood, Darren Gavin for O'Sullivan (57), Eoghan O'Gara for Rock (60), Colm Basquel for Scully (74).

Referee: Jerome Henry (Mayo).