The Merseysiders scored goals early in each half but became decidedly edgy after Walsall halved the advantage just after an hour.
It was certainly a brave sight by Walsall who have won just once away from home this season.
They were not helped by the loss of their skipper Mark Kinsella after 31 minutes with a broken nose but Joe Broad proved an able deputy.
Tranmere had the best possible start as Iain Hume netted his 12th goal of the season with a fine angled strike from 25 yards.
But Tranmere could not put the finishing touch to some good approach work and had luck on their side in the 38th minute when Jorge Leitao pulled his shot wide with only keeper Joe Murphy to beat.
Tranmere had a Danny Harrison strike in the 49th minute disallowed for a push on a defender but they made it 2-0 a minute later.
Paul Linwood set up the chance with an excellent headed clearance to Chris Dagnall who gained possession and finished well for his first goal of the season after rounding Murphy.
Walsall player manager Paul Merson gave Tranmere a warning in the 57th minute with an excellent 20-yard strike which brought a fine diving save from Russell Howarth.
But it was game on five minutes later with Leitao finding the left-hand corner from Merson's pass after a partly cleared corner.
Chris Dagnall went close for Tranmere in the 70th minute and the Merseysiders hung on well for a 10th home victory to stay third in the table.