
All-Ireland champions Dublin lived dangerously at Croke Park, relinquishing a seven-point lead but ultimately holding on to move to the head of affairs in Allianz Football League Division 1.
Jim Gavin's title favourites looked all set for a big win to move out on their own at the top of the Allianz league, temporarily at least, when they led 0-12 to 0-05 early in the second-half.
But they were made to fight all the way by a determined Donegal side that trailed by just a point with four minutes to go.
Patrick McBrearty was Donegal's inspirational attacker, scoring six second-half points to make a game of it, though the three-in-a-row All-Ireland winners eventually racked up win number three in the campaign.
Late points from Paul Mannion and substitutes Eoghan O'Gara, Ciaran Reddin and Paddy Small eased the Sky Blues to victory and maintained their 100 per cent record.
Cian O'Sullivan came on for his first league action while Colm Basquel, Brian Howard, Reddin and Small all pressed their cases for further inclusion by getting on the score-sheet.

Dublin will put their perfect record on the line in Round 4 on February 24 when they travel to Mayo while Donegal, who have yet to pick up a point, will battle relegation a day later when they play Kildare.
Dean Rock and Bernard Brogan were named in the official Dublin lineup but were replaced by Mannion and Paddy Andrews.
It was like for like replacements that hardly diminished Dublin's quality and they hit the ground running with a strong opening.
They led Donegal by 0-11 to 0-05 at half-time and would have been further clear only for Basquel rifling a goal chance over and missing a routine free.
Former Dublin U-21 Nathan Mullins, son of Blues legend Brian, was named in midfield for Donegal but was taken off after 27 minutes.
Brian Fenton and Michael Darragh Macauley lorded the middle third for Dublin, setting up attack after attack.
A strong first half performance from The Dubs has them in front at Half-Time. Check out the best of the action on GAA NOW. pic.twitter.com/wDg2LLYUfu
— The GAA (@officialgaa) February 10, 2018
It was great for the Dublin fans in attendance on a cold and wet evening - but depressingly familiar for everyone else as the hosts went up through the gears with ease.
Scully, who burst through to the senior ranks in 2017 and made the most appearances of any Dublin player in competitive action, scored 0-04 in the opening half.
He began a scoring siege of five points in a row between the seventh and 16th minutes that moved Dublin 0-06 to 0-02 clear.
Back to back Scully points later in the half helped open up that half dozen point gap at the interval.

Ryan McHugh, destroyer of Dublin in the 2014 All-Ireland semi-finals when he blasted a memorable 2-02, hit two first-half points this time.
Jamie Brennan might have pinched a goal for Donegal close to half-time but his right foot kick hit the post and cannoned away to safety.
Donegal were far better after the break and any sense that the game was done and dusted was quickly dashed.
They outscored Dublin by 0-08 to 0-02 between the 36th and 53rd minutes to reduce the gap to just a single point.
McBrearty was at the heart of Donegal's best attacking play, scoring four points during that burst.
Former All-Ireland winning captain Michael Murphy came off the bench for his first action of the year but immediately pulled an easy free wide, and missed another later on.
Dublin led by just 0-16 to 0-15 with 66 minutes on the clock but those late four points in a row eased any fears of being caught.
Dublin: Stephen Cluxton; Eric Lowndes (0-01), Philly McMahon, David Byrne; Jonny Cooper, James McCarthy, John Small; Brian Fenton (0-02), Michael Darragh Macauley; Niall Scully (0-04), Ciaran Kilkenny (0-02), Brian Howard (0-01); Paul Mannion (0-02, 0-01f), Colm Basquel (0-04, 0-01f), Paddy Andrews (0-01).
Subs: Eoghan O'Gara (0-01) for Andrews, Cian O'Sullivan for McMahon, Dean Rock for Macauley, Ciaran Reddin (0-01) for Scully, Paddy Small (0-01) for Basquel.
Donegal: Peter Boyle; Tony McClenaghan, Caolan Ward, Eoghan Ban Gallagher; Leo McLoone (0-01), Eamonn Doherty, Ryan McHugh (0-02); Hugh McFadden, Nathan Mullins; Stephen McBrearty (0-02), Odhran MacNiallais, Mark McHugh (0-01); Patrick McBrearty (0-07, 0-03f), Jamie Brennan (0-02), Ciaran Thompson.
Subs: C McGonigle for Mullins, N O'Donnell for Thompson, Michael Murphy for MacNiallais, Ciaran McGinley for McHugh, M O'Reilly for S McBrearty, P Brennan for R McHugh.
Referee: J McQuillan (Cavan).