Walsall scored twice in as many minutes to keep alive their play-off hopes.
Tommy Mooney struck from the penalty spot after keeper Shane Higgs had brought down Lee Holmes.
Anthony Gerrard then scored a header after he had been left unmarked from a Holmes corner but Paul Connor struck from six yards 16 minutes from time.
Cheltenham pushed for an equaliser but Michael D'Agostino volleyed narrowly and then, in injury time, just failed to convert a cross from David Bird.
Cheltenham: Higgs, Gallinagh (Connolly 61), Keogh, Duff, Jeremy Gill, Lindegaard, Bird, Armstrong (D Agostino 72), Scott Brown (Reid 72), Gillespie, Connor. Subs Not Used: Scott P Brown, Ben Gill.
Bookmark with:
What are these?