Cavan led by four at the break, thanks mainly to Seanie Johnston but a Penrose penalty and another major from Paddy McNiece ensured their final berth.
Tyrone:J Curran, A McCrory, D McCaul, PJ Quinn, R McNabb, D Carlin, S McNally, K Hughes (0-1), A Cassidy (0-1), S Cavanagh (0-1), B McGuigan (0-1), P McNiece (1-0), C Girvan, M Penrose (1-4 [0-3 frees, 1-0 pen]), M Donnelly.
Subs: Stephen O’Neill (0-3 [2 frees]) for Girvan (20 mins); Ryan McMenamin for McNabb (24 mins); Martin Swift for McNally (half-time); Catahl McCarron for McCaul (56 mins); Conor Gormley for Cassidy (68 mins).
Cavan:J Reilly, A Clarke, P Carroll, S Jordan, M McKeever, J McCuthcheon, D O’Reilly, R Cullivan (0-1), P O’Reilly, K Fannin (0-1), N Murray, R Flanagan (0-1 [0-1 free]), S Johnston (0-9 [0-6 frees]), G Pierson (0-2), B Fitzpatrick.
Subs: Eoin McGuigan for Cullivan (temp sub 50 mins); Barry Reilly for Murray, Oisin Minagh for Clarke 53 mins); Martin Cahill for Pierson (61 mins).
Ref: Damian Helferty.