Mayo will appear in a second successive All-Ireland football final following their 1-16 to 0-13 win over Tyrone at Croke Park.
Conor McAliskey fired over two points as Tyrone hit the front, but two scores from corner back Chris Barrett narrowed the gap, with the Red Hands ahead by 0-07 to 0-06 at the break.
But Mayo dominated the second half.
Alan Freeman netted a 39th-minute penalty, and the Connacht champions took control, with superb scores from Alan Dillon, Lee Keegan, and Freeman.
In front of a crowd of 65,345, Tyrone wing-back Ciaran McGinley opened the scoring, but his point was quickly cancelled out by a Cillian O’Connor free.
Red Hand skipper Stephen O’Neill restored the advantage, but the Ulster men suffered a blow after just five minutes when centre-back Peter Harte was forced out of the game after taking a heavy knock in the build-up to O’Neill’s score.
But Mayo also lost a key man when O’Connor picked up a knock after ten minutes, and they fell behind when McAliskey curled over two superb points in the space of a minute.
Darren McCurry made it 0-05 to 0-02, but Freeman narrowed the gap at the end of a tense opening quarter.
Freeman had the ball in the net, but the whistle had already gone for a free, which Kevin McLoughlin somehow missed.
The westerners pressed for long spells, but were forced out wide and into difficult shooting positions, and as a series of shots sailed wide, frustration mounted.
Their attackers suffocated out of the game, an enforced change in strategy forced them to take aim from distance, and defenders Chris Barrett (2) and Lee Keegan duly obliged with superbly struck scores, after they had gone 18 minutes without raising a flag.
Tyrone had registered on the breakaway through McCurry and Ronan O’Neill, who had replaced the injured Stephen O’Neill on 25 minutes.
Tyrone held a narrow 0-07 to 0-06 interval lead, but Mayo’s devastating start to the second half had them three up inside four minutes, Enda Varley landing a point, before Freeman drilled home a penalty after Colm Boyle had been brought down as he bore down on goal.
Now Mayo were in familiar territory, no longer chasing the game, and able to open out and express themselves, stretching the Tyrone defence and punishing with scores from Alan Dillon and a monster free from goalkeeper Rob Hennelly.
Having scored 1-04 without reply, James Hogan’s side were ahead by 1-10 to 0-07 with just 11 minutes of the second half played.
And even when Tyrone did break forward for scores from Aidan Cassidy and McCurry, Freeman responded with a wonder point.
Tyrone’s spirit had been broken, and when Alan Dillon, Cathal Carolan and Aidan O’Shea all powered through to score, it was clear this was to be Mayo’s day.
Tyrone: P McConnell, R McKenna, C Clarke, C McCarron, C McGinley (0-01), P Harte, C Gormley, C Cavanagh, S Cavanagh (0-02, 1f), Mattie Donnelly, Mark Donnelly, Joe McMahon, D McCurry (0-04, 2f), S O’Neill (0-01), C McAliskey (0-02).
Subs: D Carlin for Harte, R O’Neill (0-01) for S O’Neill, R McNabb for McMahon, A Cassidy (0-01) for Mattie Donnelly, K Coney (0-01) for R O’Neill
Mayo: R Hennelly (0-01f), T Cunniffe, G Cafferkey, C Barrett (0-02), L Keegan (0-02), D Vaughan, C Boyle, A O’Shea (0-01), S O’Shea, K McLoughlin (0-01f), K Higgins, A Dillon (0-02), C O’Connor (0-03f), A Freeman (1-04, 1-00 pen, 0-03f), A Moran.
Subs: E Varley (0-01) for O’Connor, M Conroy for Moran, C Carolan (0-01) for Cunniffe, R Feeney for Vaughan, B Moran for A O’Shea
Referee: M Deegan (Laois).