A storming finish at Kingspan Breffni, that included points from reigning Player of the Year Ciaran Archer, secured Dublin's return to the EirGrid All-Ireland U20 Football Championship final.

Tom Gray's side looked in trouble when they trailed by two points at the second water break having been four down at one stage late in the first half.

But the 2019 All-Ireland runners-up rallied superbly in the closing quarter and outscored Tyrone by 0-05 to 0-01 to grab their spot in next Saturday's decider.

St Maur's attacker Archer was terrific in 2019 and finished that campaign with 10-35 to his credit, and his 0-06 haul here takes his 2020 tally to 1-23 from five games.

Brian O'Leary, a finalist last year but injured throughout this year's Leinster Championship, played a key role too with 1-01 while Mark Lavin's two second-half points were vital.

It was tough on Ulster champions Tyrone who led by two at the break and were ahead by three at one stage in the third quarter, only to suffer late on as Dublin penned them in and picked off score after score.

Tyrone went with a dozen of the team that lined out in last March's Ulster final defeat of Donegal.

Conal Devlin, Simon Garrity and Rory Donnelly were the three additions while Dublin had five alterations from their team that beat Laois in the Leinster final.

O'Leary, an All-Ireland finalist in 2019, was hamstrung earlier this year along with Sean Lowry and Mark O'Leary, but all three started here.

Provincial final subs Conor Tyrrell and Adam Fearon also started for Dublin though it was Lowry who made the immediate impact, opening the scoring for Dublin and tying the game up at 0-01 apiece.

Powerful full-forward Luke Swan, a talented dual player, played in O'Leary with a clever forward hand pass in the 12th minute and the Na Fianna attacker slipped a low finish to the net.

That left the Dubs 1-02 to 0-02 ahead though Tyrone took over from there and registered 1-04 without reply between the 16th and 24th minutes.

Darragh Canavan kicked points off both feet in this period and Tiarnan Quinn scored the Tyrone goal in the 19th minute to put them 1-04 to 1-03 ahead.

Luke Swan, left, and Ciaran Archer played big roles for Dublin

Garrity set up the goal opportunity with a clever left-footed pass to Donnelly whose shot was blocked by the Dublin 'keeper but Quinn followed up and struck the loose ball to the net.

Ethan Jordan's 24th-minute point opened up a four-point lead for Tyrone but back-to-back Archer points just before the interval were significant for Dublin, leaving them just 1-07 to 1-05 down.

That margin was cut to the minimum just seconds after the restart when Archer swooped for his third, this time from a free won by O'Leary.

Both sides traded three points in the third quarter as a pattern of Tyrone scoring and Dublin replying in kind developed.

Dublin points from O'Leary and Archer twice reduced the gap to just one and the back-to-back Leinster champions finally drew level in the 54th minute at 1-12 apiece through Lorcan O'Dell.

Dublin had clear momentum now and the wind advantage too and floated over two beauties from Archer and Lee Gannon to take control of proceedings and ultimately seal a two-point win.

Dublin: Josh O'Neill; Conor Tyrrell, Adam Rafter, Josh Bannon; Mark O'Leary, Adam Waddick, Lee Gannon (0-01); Adam Fearon, Sean Foran; Mark Lavin (0-03), Lorcan O'Dell (0-02), Sean Lowry (0-01); Ciaran Archer (0-06, 0-03f), Luke Swan, Brian O'Leary (1-01).

Subs used: Evan Caulfield for Fearon (10-14mins blood), Rory Dwyer for Foran (ht), Kieran McKeon for Fearon (42mins), Padraig Purcell for Lowry (62mins).

Tyrone: Lorcan Quinn; Conal Devlin, Cormac Munroe, Cormac Quinn; Antoin Fox, Michael Gallagher, James McCann; Kevin Barker, Rory Donnelly; Tom Donaghy, Tiarnan Quinn (1-03, 0-02f), Ethan Jordan (0-05, 0-03f, 0-01 45); Darragh Canavan (0-03, 0-01m), Simon Garrity (0-01), Matthew Murnaghan.

Subs used: Ryan Jones for Donaghy (28 mins), Mark Hayes for Garrity (43 mins), Joe Oguz for Barker (48 mins), Liam Gray for Donnelly (58 mins). 

Referee: Barry Judge (Sligo).