Two goals in the last 10 minutes proved the difference as Donegal advanced to a 10th Ulster final since 2011 after a six-point win over Cavan at St Tiernach's Park in Clones.
The scoreline flattered Donegal a little – when Gearóid McKiernan swung over an equaliser for Cavan on 57 minutes, the sides were level for the fifth time and a tense finale seemed seemed in store.
But Donegal summoned up a great finish, Conor O'Donnell and Paddy McBrearty latching on to two miskicked shots to hit the net in the 61st and 66th minutes to help them ease home.
Having lost to Cavan in the 2020 Ulster final, the Tír Chonnail men were fired up for this one and while Cavan were the better team in the first half, Declan Bonner’s men were much superior in the second and ran out deserving winners, with Aaron Doherty rattling the crossbar in injury time.
The sides were deadlocked at 0-09 apiece after a rip-roaring opening half. Cavan came into the game as huge underdogs but belied that tag with an excellent first-half performance and probably should have been ahead, with the brilliant James Smith rattling the crossbar late in the half.
However, Donegal, who never lead in the first half, had butchered a couple of goal opportunities too and were looking dangerous on the break and off Patton's long kick-outs in particular.
Cavan opened the scoring after 20 seconds when Thomas Galligan won the throw-in and young full-forward Paddy Lynch, who gave full-back Brendan McCole a difficult time, fired over from play.
Michael Murphy levelled with a free but Cavan were back in front on seven minutes when Gerry Smith gathered a high ball – a tactic Cavan employed frequently – and pointed on the turn.
Patrick McBrearty and Lynch traded frees as the hectic pace of the game continued. Donegal had ruled the skies in the middle third against Armagh but Cavan matched them and forced numerous turnovers at the back, with Lynch knocking over another free from one breakaway which saw James Smith felled.
Ciaran Thompson, whose high fielding was a feature, pointed after a lightning Donegal counter-attack but a great score from James Smith made it 0-05 to 0-03 on 18 minutes.
Jamie Brennan made no mistake when firing over with his first shot but Cavan again responded instantly, James Smith finding clubmate Lynch who stroked over a lovely point via the upright. The Crosserlough duo were sensational in the first half and Donegal’s ability to limit their influence in the second was one of the keys to their victory.
A Murphy free, after a massive Patton kick-out, was cancelled out by Thomas Galligan and the 2020 All-Star waltzed through for one of the best scores of the half moments later as Cavan led by 0-8 to 0-05.
However, Man of the Match Brennan popped up with a settling point. Murphy (free) and Lynch exchanged points; Patton got a hand to Smith’s effort which smashed the crossbar and a palmed effort from Brennan left it all square at the break.
James Smith opened the second half scoring but Donegal were in front for the first time when Peadar Mogan side-stepped a defender and chipped over and Brennan landed another.
Two from Murphy (one free) made it a three-point game.
Cavan came back through Smith (mark) and McKiernan and although sub Caolán McGonagle landed a super point, two from McKiernan (one free) tied the game with 13 minutes to go.
It was anyone’s game but Donegal came up with the answers. McBrearty swung in a beauty from the right corner – then, Conor O’Donnell half-volleyed home after Brennan’s point attempt dropped short for the first goal.
Jason McGee won a free which McBrearty converted and although Ray Galligan landed a long-range free, Cavan failed to deal with another high ball, McBrearty pounced – and that was that.
Cavan: Raymond Galligan (0-1f), Jason McLoughlin, Padraig Faulkner, Killian Brady, Luke Fortune, Killian Clarke, Conor Brady, Thomas Galligan (0-2), James Smith (0-3, 1m), Gerard Smith (0-1), Gearoid McKiernan (0-3, 1f), Conor Moynagh, Cormac O’Reilly, Paddy Lynch (0-6, 3f), Cian MaddenSubs: Martin Reilly for C O’Reilly (44 mins), Oisin Kiernan for Madden (55), Caoimhin O’Reilly for K Brady (65)
Donegal: Shaun Patton, Caolan Ward, Brendan McCole, Stephen McMenamin, Ryan McHugh, Eoghan Bán Gallagher, Peadar Mogan (0-1), Hugh McFadden, Jason McGee, Ciaran Thompson (0-1), Shane O’Donnell, Michael Langan, Patrick McBrearty (1-4, 3f), Michael Murphy (0-5, 4f), Jamie Brennan (0-4)
Sub: Caolán McGonagle (0-1) for McFadden (temp, 36 mins), Odhran McFadden-Ferry for Ward (46), Conor O’Donnell (1-0) for Thompson (59), Niall O’Donnell for S O’Donnell (65), Aaron Doherty for Brennan (70), Neil McGee for Mogan (70)
Referee: Conor Lane (Cork)