Cawley, still in secondary school, added zest to a Sligo attack that welcomed back veteran Mark Breheny.
Westmeath, who trailed by seven points after 28 minutes, 0-8 to 0-1, recovered to be just a point behind at the break, 0-8 to 1-4, thanks to Ger Egan’s penalty in stoppage time — Sligo’s Brendan Egan getting a black card for fouling Egan.
In a frenetic second half. John Heslin ended up with seven points for the visitors but he missed a 69th-minute free that would have earned a draw for Westmeath.
Niall Murphy (0-5, 2f, 1 ‘45’); Mark Breheny (0-4, 4f); Kyle Cawley (1-0); Brendan Egan (0-1); Gerard O’Kelly-Lynch (0-1)
John Heslin (0-7, 4f, 1 sideline), Ger Egan (1-0, 1-0 pen), Ray Connellan (0-1), Shane Dempsey (0-1), Kieran Martin (0-1)
A Devaney, J Kelly, K McDonnell, E Flanagan, Keelan Cawley, Brendan Egan, G O’Kelly-Lynch, E McHugh, C Breheny, N Ewing, M Breheny, N Gaughan, Brian Egan, N Murphy, Kyle Cawley.
A McIntyre for Brendan Egan, h-t (black card); M Gordon for J Kelly, 44; J Hynes for K Cawley, 61; C Davey for N Gaughan, 64; P Clarke for M Breheny, 70+2; D Rooney for N Ewing, 70+3
D Quinn, J Gonoud, P Holloway, K Maguire, J Egan, S Flanagan, K Daly, P Sharry, G Egan, K Martin, C McCormack, J Heslin, J Connellan
S Dempsey for C McCormack, h-t; J Dolan for K Daly, 43; D Corroon for J Egan, 47; D Lynch for J Gonoud, 63; R Foley for A Stone, 69.
Shaun McLaughlin (Donegal)