Dublin showed their determined streak yet again at Croke Park, coming back from another slow start to reel in Donegal and claim their second win of the Division 1 campaign.
It wasn't quite the fightback from 10 points down that they pulled off to draw with Monaghan in Round 3, but falling five points behind back to back Ulster champions Donegal in the first-half still represented a steep hill to climb.
Five-in-a-row All-Ireland champions Dublin ultimately ground it out with Paul Mannion's 66th minute goal the crucial score, putting them three points clear and ahead for the very first time in the game.
Donegal got the margin back down to a single point late on but couldn't prevent Dublin from picking up their second win of the league and maintaining an unbeaten record under new manager Dessie Farrell.
Both teams were reduced to 14 men deep into stoppage time when Donegal talisman Michael Murphy, who was named Man of the Match, and his marker, Dublin defender John Small, were ordered off for their second yellow cards.
The inclusion of Craig Dias in the Dublin lineup following several years in the wilderness brought real drama before a ball was even kicked.
The Kilmacud Crokes man was an All-Ireland medallist in 2011 though was released early in the Jim Gavin era and became the 27th player to feature for new boss Farrell in this year's league when he lined out.
It was a baptism of fire for the powerful Dias who was part of a Dublin side overrun in the opening quarter as that familiar theme of slow starts played out again in front of a crowd of 26,153. Ultimately, the 29-year-old was replaced at half-time by Cormac Costello.
With 20 minutes on the clock, Donegal led by 1-05 to 0-02 and were by far the brighter, doing to Dublin what Monaghan had done to them in the opening stages of their Round 3 meeting at the same venue a fortnight ago.
Ciaran Thompson opened the scoring with a Donegal point and the visitors moved 1-01 to 0-00 clear in the eighth minute when Hugh McFadden scythed through the Dublin defence, cut inside Michael Fitzsimons and released a low shot below Evan Comerford to the net.
Murphy and Jamie Brennan helped themselves to a brace of points each and suddenly Donegal held that five-point lead with little in the way of response from Dublin at the other end.
The game could have taken on a different complexion admittedly had Murphy seen red for a high challenge on David Byrne in the third minute. It was a similar collision to the one that resulted in Richie Hogan's red card in last year's All-Ireland hurling final and Murphy may have been happy to see yellow on this occasion.
Dublin, with Sean Bugler and Ciaran Kilkenny leading the drive, were much improved in the 15 minutes or so before half-time.
They outscored Donegal by 0-04 to 0-01 in this period and racked up a series of wides that will have frustrated the likes of Dean Rock and Kilkenny but at least pointed to a greater urgency.
Brian Howard, Bugler, Rock and Kilkenny were all on the mark with points for Dublin who hinted that another comeback was on the cards when they trailed by just 1-6 to 0-7 at half-time.
Goal for @DubGAAOfficial !! Paul Mannion causes hassle near the goal to get it over the line. pic.twitter.com/Fctck2odUS— The GAA (@officialgaa) February 22, 2020
Dublin had the scent of victory in their nostrils and twice reeled off three points in a row in the second-half to eventually draw level with Donegal in the 60th minute.
The equalising point came from sub Colm Basquel and six minutes later Mannion bundled in Dublin's goal after a high ball in from Howard wasn't dealt with by Shaun Patton in the Donegal goal.
Donegal pulled back points from Murphy, McFadden and sub Paddy McBrearty but defender David Byrne's 72nd minute point for Dublin proved to be the winning point, leaving them one ahead at the death.
Dublin: Evan Comerford; Eoin Murchan, David Byrne (0-01), Michael Fitzsimons; Craig Dias, John Small, Cillian O'Shea; Brian Fenton (0-02), Brian Howard (0-02); Niall Scully, Ciaran Kilkenny (0-02, 0-01m), Sean Bugler (0-02); Paul Mannion (1-00), Kevin McManamon, Dean Rock (0-04, 0-03f).
Subs: Cormac Costello (0-01) for Dias (h/t), Colm Basquel (0-01) for McManamon (54), Aaron Byrne for Bugler (68), Paddy Small for Rock (73).
Donegal: Shaun Patton; Caolan Ward, Neil McGee, Eoghan Ban Gallagher; Daire O Baoill, Ryan McHugh, Odhran McFadden Ferry; Hugh McFadden (1-01), Michael Langan (0-01); Paul Brennan, Ciaran Thompson (0-02, 0-01f), Caolan McGonagle; Peadar Mogan (0-02), Michael Murphy (0-05, 0-02f, 0-01m), Jamie Brennan (0-02).
Subs: Niall O'Donnell for P Brennan (46), Patrick McBrearty (0-01) for McGonigle (52), Brendan McCole for Ward (56), Eoin McHugh for J Brennan (62).
Referee: Maurice Deegan (Laois).