After Rotherham had early appeals for a penalty waved away, it was the visitors who grabbed the early initiative with a goal in the 19 minute.
The ball was pumped forward from a free-kick in the centre circle and James Chambers and Romaine Sawyers combined to set up a opening for Milan Lalkovic and from wide on the right he lifted his shot over Adam Collin and into the net.
And with the visitors controlling midfield, the home side were creating very little. Ben Pringle had a shot blocked in the 32nd minute and Lee Frecklington skied the rebound over the bar, but the visitors' tightly packed defence held firm until the break.
Rotherham had a golden chance two minutes after the re-start, but Kari Anason's header from a Ben Pringle free-kick went over the bar. Then Andy Taylor got in a terrific block to deny Rotherham substitute Harris Vuckic
But then Collin did ever so well at the other end to deny Sawyers and moments later Walsall were reduced to 10 men in the 73rd minute when Ben Purkiss collected his second yellow card.
But Rotherham got their reward with two minutes remaining when Alex Revell headed on and Adams drove home off the underside of the bar.