A late point from substitute Ethan O'Donnell fired Donegal into their first ever All-Ireland minor football championship final at Croke Park.
Donegal fought back from a four-point deficit against Dublin with John Campbell's 23rd-minute goal helping them to a 1-6 to 0-6 half-time lead.
Jack Burke's goal put Dublin back in front midway through the second half.
But Stephen McBrearty kicked three crucial points before O'Donnell's winner two minutes from the end.
The Ulster champions were very slow to settle in what was their first appearance in Croke Park and trailed by 0-5 to 0-1 after 20 minutes of Sunday's semi-final.
Dublin got a lot of bodies behind the ball and forced Donegal into taking on long-range shots and they kicked six wides, and dropped one attempt short into the goalkeeper's hands, in the opening half.
Lorcan Connor's free in the fifth minute was the only score Donegal managed until Campbell's goal in the 23rd minute, which ignited their comeback.
Tony McClenaghan kicked in a high ball to Campbell, who had just moved in to full-forward, and he fisted it into the net just inside the near post.
Campbell scored 1-2 in two minutes, following up his goal with two left-footed points to put Donegal ahead for the first time.
Michael Carroll inexplicably fisted wide from close range but Connor found his range after a couple of misses.
Chris Sallier ended Donegal's hot scoring streak with a point but Donegal, buoyed on by a huge following, finished the half strongly with Cian Mulligan and McBrearty, brother of senior county star Paddy, stretching their lead out to 1-6 to 0-6 at half time.
Donegal lost forward Niall Friel to a black card early in the second half and Dublin bossed the third quarter with Burke's goal, followed by Colm Basquel's point, firing the Dubs into a 1-11 to 1-9 lead after 47 minutes.
McBrearty scored a couple of fine efforts at a stage when Donegal were struggling, hitting one spectacular point with the outside of his right boot in front of the Dublin supporters on Hill 16.
Donegal scored the last three points of the game with Connor's free and McBrearty's long-range point levelling the game with four minutes to go.
When an attempt at a Donegal point dropped short, O'Donnell responded quickest, skinning his marker to score from close range to book Declan Bonner's place in the All-Ireland final against Kerry on 21 September.
Donegal: D Rodgers; D Monahle, C Gillespie, C Kelly; S McMenamin, T McClenaghan, C Mulligan (0-2); N Harley, C McGonigle; S McBrearty (0-4), L Connor (0-3, 2f), M Carroll; J Brennan, J Campbell (1-2), N Friel
Subs: C Morrison for Friel (BC, 35), E O'Donnell (0-1) for Harley (39), G McBride for Brennan (48), C Doherty for Campbell (53), C Bonner for Kelly (58)
Dublin: E Whelan; E Murchan, J Mullins, D Monahan; A McGowan, S Clayton, G O'Reilly; A Foley, E McHugh (0-1); C Kavanagh (0-1), C Basquel (0-1), J Burke (1-1); A Byrne (0-1), C O'Callaghan (0-4, 2f), C Sallier (0-2)
Subs: B Howard for Kavanagh (49), D McIlgorm for Foley (55), W Egan for Byrne (56)
Referee: Derek O'Mahony (Tipperary)