Dublin 1-10 Donegal 0-07
All Star Dublin defender Philly McMahon struck a decisive 66th-minute goal to help see off Donegal's determined challenge and preserve the holders' perfect Allianz football league record.
McMahon's strike doubled Dublin's lead from three to six points and finally finished off Donegal who defended in numbers initially but became overwhelmed in the final 25 minutes or so.
All-Ireland champions Dublin outscored Donegal by 1-05 to 0-01 in that period to stretch their lead at the head of Division 1 ahead of their final round tie in Roscommon.
Jim Gavin's side, who are on the verge of a historic four-in-a-row of league wins, achieved their sixth consecutive success without wing-back James McCarthy who was red-carded in the 51st minute.
The in-form defender responded angrily to a heavy challenge by Michael Murphy on Ciaran Kilkenny which also resulted in Donegal star Murphy receiving his second yellow card and walking to the line.
The extra space on the field played into Dublin's hands in the remaining period as Donegal had successfully stifled the hosts for the first 45 minutes or so.
Dublin led 0-05 to 0-04 at half-time but it was difficult viewing at times as they consistently ran into a green and gold roadblock in front of 20,340 at Croke Park.
Rory Gallagher's Donegal regularly played with 14 men behind the ball and then hit Dublin on the counter attack, taking a 0-06 to 0-05 lead in the 40th minute.
But without Murphy they only scored one more point in the remainder of the game as Dublin rallied.
Substitute Dean Rock tied the scores up before Paddy Andrews put the Sky Blues into a lead they wouldn't relinquish.
Still, there was only three points in it late on when McManamon, who struck three points overall, combined with Paul Flynn to play in McMahon who applied a low finish to the Donegal net.
There was some consolation for Donegal as Colm McFadden appeared as a late substitute in what was his first appearance of the year after a calf injury.
Dublin: M Savage; P McMahon (1-00), J Cooper, David Byrne; J McCarthy, E Lowndes, J Small; B Fenton (0-01), D Bastick; K McManamon (0-03), P Flynn, C Kilkenny (0-01); C Costello (0-03, 0-02f), P Andrews (0-01), B Brogan.
Subs: D Rock (0-01) for Brogan, E O Conghaile for Bastick, SB Carthy for Lowndes, M Fitzsimons for Small, T Brady for Costello, D Daly for McManamon.
Donegal: MA McGinley; P McGrath, E McGee (0-01), C Gillespie; M O'Reilly, A Thompson, R McHugh; O MacNiallais (0-01), M Murphy (0-01); R Kavanagh (0-01), K Lacey, E McHugh; P McBrearty (0-03, 0-01f), L McLoone, H McFadden.
Subs: M McHugh for McGrath, M McElhinney for McLoone, E Gallagher for Thompson, C Toye for McFadden, C McFadden for Lacey, M Carroll for Kavanagh.
Referee: C Lane (Cork).