The visitors led through Jordy Hiwula’s 12-minute shot, but City were ahead within nine minutes as Aden Flint volleyed an equaliser and Jay Emmanuel-Thomas slotted home a penalty after handball by Kieron Morris.
Walsall showed plenty of enterprise to level before the break, with Hiwula shooting his second through the legs of Luke Ayling after 35 minutes.
But City ran riot with four goals in 10 minutes after the interval, Kieran Agard sparking the avalanche with a low shot from Korey Smith’s 57th-minute pass.
Emmanuel-Thomas teed up Marlon Pack to make it 4-2 and then blasted the fifth himself before Flint took his goal tally for the season to 14 by stabbing in a Luke Freeman cross.
It was Flint again completing an unlikely treble by volleying in substitute Wade Elliott’s cross at the far post four minutes from time before Agard completed the rout in injury time from Smith’s through ball.