Mayo confounded their critics to edge out 14-man Tyrone at Croke Park and qualify for their sixth successive All-Ireland SFC semi-final.
In a game of huge intensity, the sides were level nine times, but Lee Keegan's 65th minute point ultimately proved decisive as Tyrone spurned a number of chances late on to save their season. The Ulster champions lost Sean Cavanagh to a second yellow card with 10 minutes remaining and the captain's absence was sorely felt as a lack of composure became apparent.
While Mayo outsmarted their opponents over the 70 minutes, they were fortunate to hang on for a penultimate round date with surprise packets Tipperary on August 21. It will be Mayo's 46th All-Ireland semi-final appearance and one that seemed most unlikely after they were dethroned as Connacht champions by Galway in June.
Cillian O'Connor top-scored with 0-7, while Lee Keegan and Aidan O'Shea also impressed for Stephen Rochford's men who will take a great deal of encouragement from winning such a tight game. Tyrone will be left to rue a tally of 14 wides and Cavanagh's controversial late dismissal for a high tackle on O'Shea.
Mayo were unsuccessful with three early scoring attempts before O'Shea finally opened the scoring in the sixth minute. Niall Sludden levelled for Tyrone before points from Andy Moran (after good work by O'Shea) and Cillian O'Connor gave Mayo a 0-3 to 0-1 lead.
Tyrone were back on terms by the 19th minute thanks to a Mattie Donnelly brace, the first of which clipped the crossbar. Jason Doherty restored Mayo's lead, only for Ronan O'Neill to tie up the scoring again from a free.
Rory Brennan replaced Justin McMahon in the Tyrone defence before Cillian O'Connor edged Mayo back in front after taking a return pass from Moran. But two Peter Harte frees had Tyrone ahead for the first time after 25 minutes before Donnelly's third point made it 0-7 to 0-5.
However, Mayo regained parity at the break thanks to an O'Connor free and an inspirational point from defender Colm Boyle in stoppage-time.
Lee Keegan (Mayo) and Sean Cavanagh (Tyrone) were both shown yellow cards before the start of the second period, while Tom Parsons replaced Alan Dillon on the Mayo team. It didn't take the Westerners long to retake the lead with O'Connor's fifth point of the game.
Harte's third free made it 0-8 apiece before Parsons' signalled his arrival by bursting through the Tyrone rearguard and splitting the posts in the 40th minute. By now, Mayo were on top at midfield and O'Connor's third and fourth frees pushed them two ahead, 0-10 to 0-8. At the other end, Tyrone racked up their eighth wide, but a long-range Connor McAliskey free left them just a point adrift entering the final 20 minutes.
Mayo goalkeeper David Clarke comfortably saved from McAliskey, but the Tyrone number 13 made amends with another free from distance to level proceedings for a seventh time. Peter Harte kicked a beauty from play to edge the Ulster champions back into the lead, but Mayo also have wing backs who can score as Lee Keegan demonstrated to tie up the scoring at 0-11 each.
The losers were dealt a huge blow when Sean Cavanagh received his marching orders for the challenge on O'Shea. Their misery was compounded when O'Connor slotted over the resultant free to put Stephen Rochford's men ahead with 10 minutes to go.
Darren McCurry had a similar score at the other end to leave the sides deadlocked for a ninth time, but Keegan nudged Mayo back in front with another quality point as Tyrone's wide tally increased to 11.
With the 70 minutes elapsed, Mayo needlessly conceded a free on the '65' after trying to count down the clock by keeping possession. Tyrone failed to capitalise, though, as goalkeeper Niall Morgan's kick tailed to the left and wide. Darren McCurry missed another great chance to salvage a draw when he fired wide with 90 seconds remaining as the underdogs held on.
Mayo - D Clarke; B Harrison, J Doherty, K Higgins; L Keegan (0-2), C Boyle (0-1), P Durcan; S O'Shea, D Vaughan; K McLoughlin, A O'Shea (0-1), D O'Connor; A Dillon, A Moran (0-1), C O'Connor (0-7, 4f). Subs: T Parsons (0-1) for A Dillon, C O'Shea for D Vaughan, C Barrett for C Boyle, E Regan for A Moran, C Loftus for J Doherty, S Coen for D O'Connor.
Tyrone - N Morgan; A McCrory, R McNamee, C McCarron; T McCann, Justin McMahon, R McNabb; C Cavanagh, M Donnelly (0-3); P Harte (0-4, 2f), N Sludden (0-1), C McShane; C McAliskey (0-2f), S Cavanagh, R O'Neill (0-1f). Subs: R Brennan for Justin McMahon, D McCurry (0-1f) for R O'Neill, M Bradley for C McShane, K McGeary for C McAliskey, J Monroe for R McNabb, P McNulty for N Sludden.
Referee - D Gough.Tweet