Crawley, who realistically had to win to stand any chance of staying up, were on course to do just that when Mathias Pogba headed them in front just after the break.
But fit-again Tudgay headed Coventry level 17 minutes from time and substitute Maddison settled the issue with the winner in the last minute of normal time.
Coventry, who needed a point to stay up, began brightly and skipper Jim O’Brien was in an off-side position when he bundled in an early John Fleck free-kick.
Midfielder Fleck was off target from the edge of the area before Sky Blues goalkeeper Lee Burge held a Josh Simpson chip following a free-kick by Lee Fowler.
Crawley’s leading scorer Izale McLeod drove over a shot from 20 yards after O’Brien became the first booking of the game for a late challenge on Lewis Young.
Keeper Burge was forced to save low down from Marvin Elliott before Coventry striker Nick Proschwitz missed a penalty a minute from the interval.
Proschwitz stepped up after Tudgay was brought down by Gavin Tomlin, but his weak spot-kick was saved by veteran Danish keeper Brian Jensen diving to his right.
Crawley broke the deadlock three minutes after the break through Pogba, who headed in a deep cross by Tomlin at the far post.
Tudgay hit back to equalise after 73 minutes by heading into the top left-hand corner of the net following a cross by O’Brien.
And substitute Maddison clinched victory in the last minute with a low shot into the centre of the net after a pass by Frank Nouble.