Armagh gave their chances of reaching a Division One league final a shot in the arm as they returned to winning ways against Kieran McGeeney's old team, Kildare.

It was a deserved win for Armagh and stretches Kildare’s losing run in Ulster to seven league games, a run going back to 2017, and it was a third defeat to a northern side for Glenn Ryan’s team this season.

In wet and windy conditions, the Lilywhites could have been picking the ball out of their net after less than 30 seconds, but Niall Rowland struck the upright after Rian O’Neill’s pass when he really should have scored.

Kildare scored the first two points of the game through Paddy Woodgate and Daniel Flynn, but Armagh wasted no time in reeling them in and they were level by the 15th minute after points from Aidan Forker and Tiernan Kelly.

A beautifully struck left footed effort from Ben McCormack gave Kildare the lead a minute later but that was the last time they had their noses in front.

Aidan Forker is tackled by Kildare's Paul Cribbin

Jemar Hall quickly levelled and then Andrew Murnin scrambled home the game’s only goal in the 20th minute despite the best efforts of Mark Donnellan in the Kildare goal. That finish came after a long spell of patient, possession football from Armagh, the kind that they showed throughout the game.

Kildare’s response to that led to their best spell of the game and they scored the next three points, from Woodgate (2) and Hyland, to tie the scores.

Armagh though finished the half on top and took a 1-4 to 0-6 lead into the break after a close range Rian O’Neill free kick.

If the first half was closely fought, Armagh showed the gap that you might expect between a team managed by somebody in his eighth season as opposed to a team managed by somebody yet to reach eight games.

Armagh attacked as one and defended as one and got more on top as the game wore on.

Jarly Óg Burns and Rory Grugan scored to push them a goal clear heading in the last 20 minutes and they were always able to keep Kildare at arm’s length.

Armagh manager Kieran McGeeney watches on in testing conditions at the Athletic Grounds

Kildare didn’t help themselves either and some of their shot selection left a lot to be desired, while Armagh were able to call on Stefan Campbell who came off the bench to score two points.

After Campbell’s first point, O’Neill landed a 45 with ten minute to push Armagh four points clear and by then it was becoming clear that Kildare would need a goal to get them back into contention but they never forced Ethan Rafferty into a meaningful save.

Substitute Darragh Kirwan and Jimmy Hyland scored to briefly cut the Armagh lead back to two points as they threatened to snatch a result but Armagh were able to repel the best the visitors had to offer and they sealed the win with the last three points of the game through Campbell, Jason Duffy and O’Neill.

Armagh: Ethan Rafferty; Greg McCabe, Aidan Forker 0-1, Aaron McKay; James Morgan, Niall Rowland, Jarly Óg Burns 0-1; Ciaran Mackin, Ben Crealey; Jemar Hall 0-1, Rory Grugan 0-2 (1f), Tiernan Kelly 0-1; Andrew Murnin 1-0, Rian O’Neill (2fs, 1’45, 1m), Ciaran O’Hanlon.

Subs: Stefan Campbell for Hall 0-2, 45; Jason Duffy for Murnin, 51; Connaire Mackin for Rowland, 54; Conor O’Neill for O’Hanlon, 64; Niall Grimley for Crealey, 70.

Kildare: Mark Donnellan; Mick O’Grady, Shea Ryan, Ryan Houlihan; Jack Sargent, James Murray, Darragh Ryan; Aaron Masterson, Kevin Flynn; Fergal Conway, Ben McCormack 0-1, Paul Cribbin; Paddy Woodgate 0-3 (1f), Daniel Flynn 0-1m, Jimmy Hyland 0-4 (3s).

Subs: Darragh Kirwan 0-1 for Woodgate, 47; Kevin Feely for Masterson, 51; Kevin O’Callaghan for Conway, 51; Alex Beirne for Murray, 61; Tony Archbold for Sargent, 61; Brian McLoughlin for Hyland, 70b/s.

Referee: Joe McQuillan (Cavan).