The Gweedore man rifled over a stunning winning point in stoppage time at the end of extra-time, to finally settle a gripping encounter.
Eoghan O'Flaherty gave Kildare the impetus with a handful of early scores, but Paddy McBrearty and Rory Kavanagh kept the Ulster men in touch.
The Lilywhites went two ahead with O'Flaherty's third, and Eamon Callaghan floated another Lilywhite score between the posts, before Mark McHugh ended a half-hour of scoreless action for Donegal with a stoppage time score.
Kildare led by 0-5 to 0-3 at the break, and stretched the advantage with a long range free from O'Flaherty.
Tomas O'Connor had a Kildare goal disallowed for square ball, and Donegal responded with quick-fire points from Michael Murphy, Ryan Bradley and Dermot Molloy, made it 0-6 apiece on 45 minutes.
Substitute Christy Toye made a sensational entry to the action. Just seconds after replacing McFadden in the 58th minute, he slipped in behind the Kildare cover to take Frank McGlynn's shot and beat goalkeeper Shane Connolly with a low finish, a priceless goal with his very first touch.
O'Flaherty nailed a free to end a 16 minute scoreless spell for Kildare, and as Donegal were forced back by relentless Lilywhite pressure, James Kavanagh narrowed the gap to a point with a sublime effort from wide on the left, and O'Flaherty levelled at 1-7 to 0-10 in the fourth minute of stoppage time.
Kieran McGeeney freshened things up from the bench, and it was substitutes Ronan Sweeney, Alan Smith and Gary White who hit the target to ease Kildare into a 0-13 to 1-8 lead midway through extra-time.
Murphy dragged Donegal back into contention with a couple of much-needed scores, before Toye levelled in stoppage time, and there was still time for Cassidy to drill over the winner from long range.
Donegal scorers: C Toye 1-1, M Murphy 0-3 (1f), K Cassidy 0-2, K Lacey, R Kavanagh, M McHugh, R Bradley, P McBrearty, D Molloy 0-1 each.
Kildare scorers: E O'Flaherty 0-6 (4f), A Smith 0-2, E Bolton, P O'Neill, E Callaghan, J Kavanagh, G White (f), R Sweeney 0-1 each.
Kildare: S Connolly, A MacLochlainn, M Foley, H McGrillen, B Flanagan, M O'Flaherty, E Bolton, J Doyle, D Flynn, P O'Neill, E O'Flaherty, E Callaghan, R Kelly, T O'Connor, J Kavanagh.
Subs: A Smith for O'Connor, O Lyons for MacLochlainn, R Sweeney for Flanagan, M Conway for O'Neill, G White for Doyle, F Dowling for Kavanagh, Doyle for E O'Flaherty, Flanagan for Kelly
Donegal: P Durcan, F McGlynn, N McGee, P McGrath, A Thompson, K Lacey, K Cassidy, N Gallagher, R Kavanagh, M McHugh, M Hegarty, R Bradley, P McBrearty, D Walsh, C McFadden.
Subs: M Murphy for McBrearty, E McGee for McGrath, M McElhinney for Gallagher, D Molloy for Hegarty, C Toye for McFadden, McFadden for Molloy, K Rafferty for McElhinney, Gallagher for Rafferty, Molloy for McFadden, McBrearty for Bradley
Referee: D Coldrick (Meath).