Gaffney scored 11 points, 10 from placed balls, as the Orchard County joined Antrim in the third tier of next year’s hurling league.
Armagh had lost to Down in the opening round of this season’s campaign and trailed again early on when Danny Toner nailed four of the game’s opening five points.
Declan Coulter opened Armagh’s account and points from Gaffney and Conor Corvan helped them draw level at 0-7 apiece. A flurry of points from Stephen Renaghan, Gaffney, and Nathan Curry gave Armagh a 0-12 to 0-7 interval lead.
Down keeper Stephen Keith pulled off a superb save from Declan Coulter’s penalty and Armagh were rocked further by a goal from Down sub Chris Egan and points from Toner and Rian Branagan.
However Down’s challenge faded when Ruairi Campbell was sent off in the 45th minute, and late points from Gaffney, Coulter and John Corvan clinched the title for Armagh.
R Gaffney (0-11, 10 f); D Coulter (0-4); S Renaghan (0-2); J Corvan, C Corvan, C Devlin (0-1 each).
D Toner (0-7, 4 frees); C Egan (1-0); C O’Prey (0-3f); J McGrath, S Nicholson (0-2 each); R Brannigan (0-1).
S Doherty. C Clifford, A McGuinness, C Devlin. K McKernan, S Gaffney, C Toner. S Renaghan, J Corvan. R Gaffney, D Coulter, D Carvill. C Carvill, E McGuinness, C Corvan.
C Devlin for E McGuinness (45), P McKearney for John Corvan (66).
S Keith. C O’Prey, P Flynn, S Ennis. J McManus, A O’Prey, J McGrath. C Woods, S Nicholson. F Conway, D Hughes, R Branagan. S Dineen, D Toner, C Mageen.
C Egan for Conway (43), P Sheehan for A O’Prey (48), R Campbell for R Brannigan (53), J Doran for S Dineen (63).
P Murphy (Carlow).