The hosts just about edged a tight contest to take the points, thanks to Darren Bent's second-half header. Walsall started brightly, but it was Town who went ahead on 13 minutes from the penalty spot.
Bent was tripped by keeper James Walker after collecting a weak Steve Corica back-pass and Alun Armstrong converted the penalty. Bent and Armstrong went close for Ipswich before Walsall drew level on the half hour.
Vinny Samways swung in a free-kick from close to the corner flag and Gary Birch rose unmarked to thump a header beyond Kelvin Davis. Ipswich came back well though after a nervous few minutes and upped the pace as half time approached.
Armstrong crossed for Jim Magilton to shoot wide, Bent saw Walker tip his header round the post, Alan Mahon had a shot deflected wide and Jermaine Wright's volley flew just over.
Ipswich kept up the pressure after the break with Chris Bart-Williams flashing a shot wide and then Bent's shot brought a fine diving save out of Walker. Paul Merson flashed a drive just wide before Bent failed to control a Fabian Wilnis pass when he was in the clear.
Armstrong fired straight at Walker after seizing on a loose ball before Town regained the lead on 67 minutes. Wright and Wilnis combined down the right and when the latter crossed, Bent dived to head beyond Walker.
Mahon had an angled drive blocked by Walker before Davis made a superb save to tip Darren Wrack's close-range header around the post. Walsall pushed forward in numbers towards the end and nearly paid for it as subs Pablo Counago and Ian Westlake both went close to sealing the victory