Dublin maintained their 100% record in Division One of the Football League as they beat Donegal 1-10 to 0-7.
After Dublin led 0-5 to 0-4 at half-time, Donegal fought back to lead by one but they missed other chances to increase their advantage at Croke Park.
After Dublin regained the lead, Donegal skipper Michael Murphy and Dublin's James McCarthy were both red carded.
Minus Murphy, Donegal lacked composure in the closing stages and Philly McMahon's goal sealed Dublin's win.
Donegal had an immediate goal chance but Eoin McHugh failed to get proper purchase on his shot and keeper Michael Savage was able to avert the danger.
Dublin's Kevin McManamon was the most impressive forward on show in the first half, as he kicked two fine points from play, and was always a threat.
However, there was never more than two between the sides in the opening period and after an Eamonn McGee point helped Donegal level, a Ciaran Kilkenny point edged Dublin one ahead at the break.
Donegal's best period came after the restart as a Paddy McBrearty free and Odhan MacNiallais point edged them one ahead.
However, Donegal missed further chances during their period of superiority with McBrearty hitting the woodwork and Leo McLoone also off target.
After scores from influential substitute Dean Rock and the previously quiet Paddy Andrews restored Dublin's lead, Donegal came out of the two red cards decidedly the worse off as Murphy was badly missed in the closing stages.
Murphy received his second yellow card for a dangerous sliding tackle on Kilkenny with McCarthy appearing to receive his second caution for his part in the subsequent dust-up.
As Dublin took control, Brian Fenton kicked a point when a goal appeared on but while McBrearty ended Donegal's 22-minute search for a score in the 62nd minute, McMahon's goal ended the contest as he ran through to score after Ryan McHugh had lost possession.
Dublin were already assured of their semi-finals place going into the Croke Park contest but Donegal will need a win over Monaghan next weekend to book their last-four berth after suffering this third successive defeat.
SATURDAY'S GAA RESULTS
Allianz Football League
Dublin 1-10 0-07 Donegal
Tyrone 0-13 1-10 Armagh
Tipperary 1-05 2-13 Kildare
Leitrim 1-04 0-12 Carlow
Allianz Hurling League
Division Two A Final
Carlow 0-08 0-10 Westmeath
Division Two B Final
Armagh 0-20 1-15 Down
Division Three A Final
Monaghan 0-07 Roscommon 4-15
Division Three B Final
Fermanagh 2-13 3-08 Longford