In the 19th minute, Marc Joseph did superbly on the right-wing to put in a perfect cross for Stuart Elliott, but his header was saved.
City fans were left scratching their heads when a corner somehow failed to go in, but the second goal came moments later as Elliott netted in the 34th minute. He cut inside from the left and the Michael Standing's attempted block only helped in taking his drilled shot into the bottom corner.
5 minutes later, Junior Lewis got in on the act with his first goal of the season. Having earlier hit the post, he broke into the box and smashed in a left-footed shot for 3-0.
Walsall did come close to pulling one back before half time but Boaz Myhill clawed it away with a good save.
That was perhaps a sign of things to come in the second half, when the match was turned on its head. City fell to pieces as the visitors took the game to them, and they narrowed the scoreline just five minutes after the break. Michael Standing wasn't challenged, and he hit a low 25-yard shot into the back of the net.
Danny Allsopp had City's best chance of the second half after playing a superb one-two with Nick Barmby, but he scuffed his shot just wide in a one-on-one situation.
The Saddlers really dominated the half, but were unable to force any saves out of Myhill as their efforts all went into the North Stand.
The 3-1 scoreline was good enough for a fourth successive home win, but the second half performance was disappointing after getting off to such a brilliant start.
City line-up (4-4-2): Myhill; Joseph, Cort, Delaney, Dawson; Green (Price 90), Ashbee, Lewis, Elliott; Allsopp (Keane 65), Barmby (Walters 75).
Un-used subs: Brock, France.