Madden’s 14th minute deflected strike gave the Cod Army a welcome lead, but Daniel Whitehead levelled with his first goal for the Valiants four minutes into the second half.
But Morris’ 75th minute strike prevented Joey Barton’s side from being taken to penalties by their League Two visitors.
Defeat for Vale saw their longest unbeaten run for 19 years ended as the visitors had not lost for 11 games, their longest unbeaten run since the 2000/01 season.
However, it was the hosts who deserved their victory and they could have easily taken the lead after only two minutes, only for shot-stopper Dino Visser to thwart Wes Burns with a smart save.
South African keeper Visser got down well to palm away Wes Burns’ powerful low drive as Barton’s side made a bright start.
Four minutes later, Callum Camps had a penalty appeal turned down by referee Ross Joyce after going down from a strong challenge in the box.
Whitehead let rip with a right-footed shot with the Valiants’ first chance of the half, but his effort was deflected wide for a corner.
It was Fleetwood who took the lead when Madden’s deflected strike wrongfooted Visser and flew into the bottom right corner.
Ched Evans then tried his luck with a right-footed curler from the edge of the box, but his effort flew well over.
The visitors should have levelled in the 20th minute but Theo Robinson inexplicably missed with the net at his mercy.
Fleetwood were caught sleeping and Alex Hurst whipped a dangerous cross across the box, but an unmarked Robinson miscued at the back post and the opportunity went begging.
However, Fleetwood should have doubled their lead just after the half-hour mark, only for Evans to be denied by a wonderful save from Visser.
Camps teed up the striker inside the box but Visser spread himself brilliantly to block Evans’ goalbound strike.
The Valiants started the second half with a spring in their step and needed just four minutes to equalise.
Debutant Harry McKirdy provided the assist as Whitehead fired home from 16 yards out.
Three minutes later, Daniel Trickett-Smith had a stinging drive charged down on the edge of the box as John Askey’s side looked to make their early pressure count.
Emmanuel Oyeleke had a shot blocked moments later before Morris blasted well over for the hosts from a free-kick on the edge of the area.
Camps fired well wide as Fleetwood looked to restore their lead and then would have scored but for the woodwork.
Burns burst down the right wing, whipped in a delightful cross but substitute Harvey Saunders agonisingly hit the bar with a sliding shot.
Zak Mills had a thunderbolt shot charged down inside the box as the home side looked to put the contest to bed with 11 minutes remaining, but the damage had been done.
Fleetwood Town: Cairns, Andrew, Whelan, Burns, Evans (Saunders 55), Camps (Matete 80), Morris, Coutts (Duffy 61), Madden, Stubbs, Hill. Subs not used: Leutwiler, Boyes, Garner, Holgate.
Port Vale: Visser, Crookes, Oyeleke (Burgess 74), Montano, Robinson, Mills, Brisley, Whitehead, McKirdy (Worrall 72), Tricket-Smith (Joyce 64), Hirst. Subs not used: Brown, Smith, Cullen, Fitzpatrick.
Referee: Ross Joyce.