Armagh became the first county to complete a hat-trick of Ulster football titles since 1961 by beating Donegal by three points at Croke Park.
Donegal's Christy Toye is held back by Kieran McGeeney
After a nip-and-tuck first half, Armagh siezed the initiative early in the second when captain Paul McGrane shot in the crucial goal.
Donegal tried to recover but Armagh maintained the three-point lead.
The final saw Armagh's Oisin McConville become the record point scorer in the history of the Ulster Championship.
It was the sixth year in a row that Donegal's Ulster exit has been at the hands of the Orchard County.
The first half ended level on four points each with McConville, Ronan Clarke (2) and John McEntee on target for the champions with Adrian Sweeney (2), Rory Kavanagh and Barry Dunnion replying.
The telling score came on 36 minutes as McGrane surged through to unleash a shot into the top corner of the Donegal net.
Brian McIver's underdogs narrowed the gap with points from Conall Dunne and Sweeney to a first for Armagh forward Steven McDonnell.
But Armagh put a strangehold on proceedings with points from McConville, Aaron Kernan, Clarke and McEntee.
That put them four ahead and going into stoppage-time they were three in front, Eamon McGee and Michael Hegarty pointing for Donegal with Andy Mallon on target for Armagh.
Right at the end Donegal substitute had a chance to score an equalising goal but keeper Paul Hearty pulled off a vital stop.
Armagh: P Hearty, A Mallon (0-1), F Bellew, E McNulty, A Kernan, C McKeever, P Duffy, K McGeeney, P McGrane capt (1-0), M O'Rourke, J McEntee (0-2) M Mackin, S McDonnell (0-1) R Clarke (0-3), O McConville (0-2).
Substitutes: P McKeever for Mackin 52, A O'Rourke for Duffy 70.
Donegal: P Durcan, K Lacey, P Campbell, N McGee, E McGee (0-1), B Monaghan, B Dunnion (0-1), N Gallagher, B Boyle, C Toye capt, M Hegarty (0-1), C Bonner, R Kavanagh (0-1) C Dunne (0-1), A Sweeney (0-3).
Substitutes: C Kelly (0-1) for Dunne 42, D Diver for Boyle 52, S McDermott for Sweeney 57.
Bank of Ireland Munster final
Kerry 0-10 0-10 Cork
All-Ireland qualifiers second round
Leitrim 0-09 1-07 Sligo