Donegal stayed in Division 1 as Armagh suffered the drop by losing the Football League relegation battle.
Armagh led 0-4 to 0-1 early on and remained 0-7 to 0-5 ahead at half-time.
Michael Stevenson's six points helped Armagh maintain a 0-10 to 0-7 lead with 20 minutes left but Paddy O'Rourke's side failed to register another score.
With Colm McFadden bringing his tally up to five and Rory Kavanagh, Adrian O'Hanlon and Frank McGlynn hitting scores, Donegal took control.
Donegal notched the opening score at Ballybofey but Armagh soon levelled as Brian Mallon's goal chance was deflected over the bar by keeper Paul Durcan and three Stevenson frees then edged the visitors three ahead.
Armagh made changes to their published line-up before the start with Crossmaglen duo Jamie Clarke and Aaron Kernan both drafted into the side.
However, in truth the Crossmaglen duo made little impact in a game which was dominated by two sets of blanket defences for most of the contest.
Kavanagh got Donegal scoring again only for Ciaran McKeever to immediately reply for Armagh and the visitors remained 0-7 to 0-5 ahead at the break.
Armagh looked set for victory as they extended their lead to 0-9 to 0-5 and despite a point from substitute Dermot Molloy, the Orchard men still looked in control as they led 0-10 to 0-7.
However, points from McFadden and Frank McGlynn helped Donegal draw level and Kavanagh's point then edged Donegal ahead.
McFadden's fifth point doubled Donegal's lead and Gavin McParland and Micheal O'Rourke then missed great chances to get Armagh scoring again.
In injury-time a turnover gifted a late goal chance to Armagh but the opportunity probably fell to the wrong man in the willing John Kingham as his less than convincing shot was blocked by Kavanagh.
Adrian O'Hanlon's closing point left Armagh with much to ponder heading into the Ulster Championship.