Tyrone 0-18 Cavan 1-12
Tyrone, who boast the third best record in the qualifiers, booked their place in the final round after ending Cavan's interest in sweltering heat at Brewster Park in Enniskillen.
Cavan finished with 14 men when Ciaran Brady was sent off in injury time after picking up a second yellow, but by that stage Tyrone didn't look like letting the game slip from their grasp.
They led for most of the game and were never in arrears but a lapse in concentration which ended in a 42nd minute goal for Martin Reilly hauled Cavan back into a match that looked to be falling away from them.
Reilly's goal, preceded by a Gearoid McKernan point, cut a Tyrone lead of five points down to just one and the brilliant McKernan had them level after 43 minutes from play.
From there Cavan fell into arrears and twice more drew level with a much improved second-half performance.
But Tyrone had that added bit of experience and class, even though it was far from a vintage display from Mickey Harte's side.
Conor Moynagh drew Cavan level in the 55th minute, 1-10 to 0-13, but from there on they managed just two more points.
Niall Sludden finished with 0-3 from play and was one of Tyrone's best attackers, although Connor McAliskey had a poor outing and was hauled ashore after failing to score from play.
After Moynagh brought Cavan level with 20 minutes left to play Tyrone made a winning break, with sub Ronan O'Neill scoring twice and Frank Burns scoring another from their best goal chance, his shot deflected over for a point by Fergal Reilly.
Another score from Peter Harte had them four ahead with five minutes to go, enough to finally subdue Cavan.
Cavan had Dara McVeety and Conor Moynagh reprieved after their one-match suspensions were overturned after a post-match scuffle in the previous round against Down.
Scorers: Tyrone - R O'Neill (1 f), N Sludden 0-3 each, T McCann, C McShane, M Donnelly, F Burns, P Harte (2 fs) 0-2 each, C McAliskey (f), R Donnelly 0-1 each. Cavan - G McKernan 0-5 (0-2 fs), M Reilly 1-0; D McVeety 0-2; C Brady, K Clarke, O Kiernan, S Johnston, C Moynagh 0-1.
Tyrone: M O'Neill; P Hampsey, R McNamee, M McKernan; T McCann, F Burns, P Harte; C Cavanagh, D McClure; M Donnelly, N Sludden, C Meyler; C McShane, R Donnelly, C McAliskey. Subs: R O'Neill for McAliskey (41 mins); K McGeary for McShane (52); H Loughran for McClure (62); C McCarron for McKernan (65); C McCann for Meyler (69); R Brenna for Sludden (72).
Cavan: J Farrelly; K Brady, C Moynagh, E Flanagan; C Brady, M Reilly, C Moynagh; K Clarke, G McKernan; O Kiernan, C Mackey, S Johnston; N Murray, C Bradley, D McVeety. Subs: S McCormack for Clarke (inj 36 mins); A Cole for Mackey (half time); P Faulkner & J McLoughlin for Flanagan & Murray (41); C Mackey for K Brady (61); C O'Reilly for Johnston (61).