Two goals by Michael Murphy clinched promotion for Donegal and relegated Armagh from Allianz League Division 2 on a 2-10 to 10-8 scoreline at the Athletic Grounds.
Murphy converted a 15th-minute penalty after Colm McFadden was fouled as Donegal led by 1-05 to 1-03 at half-time. Jamie Clarke notched Armagh's goal after 17 minutes.
Murphy found the net in the 39th minute after a long ball in from Rory Kavanagh, the midfielder also hitting three points from play while Paddy McBrearty had a big impact off the bench.
Donegal, who were relegated from the top flight last season, started brightly and hit the first four points of the game inside six minutes with two frees from McFadden and two points from play from the influential Kavanagh.
Armagh reduced the deficit by two before Donegal were awarded a very soft penalty when McFadden was adjudged to have been fouled by Finian Moriarty.
Murphy converted the penalty on the quarter hour mark with a low shot to the goalkeeper's right, putting Jim McGuinness' side 1-04 to 0-02 ahead.
Clarke responded almost immediately with a goal and a point inside three minutes. In his only second touch of the game, he got his foot to Kevin Dyas' pass and the ball rolled over the line.
Two minutes later he scored a brilliant point to reduce the deficit to one point, but it proved to Armagh's last score of the opening half.
Armagh had a good penalty shout turned down when a foot-block appeared to hamper Stefan Campbell, but Longford referee Fergal Kelly waved away the appeals.
McFadden's free just before the break ended a 15-minute spell when neither team scored and put the Tir Chonaill men 1-05 to 1-03 in front at the interval, with a strong wind at their backs to come in the second half.
Donegal went route one and scored the simplest of second goals after 39 minutes. Kavanagh fielded Paul Durcan's kick-out, turned and kicked it long in towards Murphy who beat Charlie Vernon to the ball, swivelled and buried it to the back of the net.
Armagh were always chasing the game after that. They fought hard, with Tony Kernan landing three points from placed balls in the second half, but they never got closer than to within three points of the 2012 All-Ireland champions.
Armagh captain Clarke was surprisingly taken off with a few minutes to go, while Aaron Kernan also came off after 50 minutes in what was his first start of the season after injury.
McBrearty, who will be leading Donegal's attack in Wednesday night's Ulster Under-21 final, impressed with a two-point contribution as a substitute.
David Walsh was black carded late on for the visitors who are now looking forward to a training camp break in Portugal ahead of their Division 2 final clash with Monaghan on Sunday 27 April.
ARMAGH: P McEvoy; M Murray, G McCooey (0-01), F Moriarty; A Kernan (0-01), C Vernon, A Mallon; K Toner, S Harold; S Campbell, K Dyas, E McVerry; J Clarke (1-01), T Kernan (0-03, 0-02f, 0-01 '45'), K Carragher (0-01).
Subs: A Findon for A Kernan (49 mins), E Rafferty for Dyas (51), R Grugan for McCooey (53), R Tasker (0-01) for Clarke (67).
DONEGAL: P Durcan; E McGee, N McGee, K Lacey; F McGlynn, L McLoone, A Thompson; R Kavanagh (0-03), N Gallagher; M McElhinney, C Toye, O MacNiallais; C McFadden (0-05, 0-04f), M Murphy (2-00, 1-00 pen), D Molloy.
Subs: P McBrearty (0-02) for Gallagher (49 mins), David Walsh for Toye, R McHugh for Molloy (both 56), H McFadden for McElhinney (63), Declan Walsh for David Walsh (black card, 70)
Referee: Fergal Kelly (Longford)