The big striker glanced home Shaleum Logan's right-wing cross in a game the home side should have wrapped up long before the end.
Walsall goalkeeper Richard O'Donnell kept his side in it with a string of fine saves to deny Donaldson and Adam Forshaw in the final minutes.
Forshaw also saw a 30-yard rising drive cannon to safety off the crossbar in the first half as Brentford coped better with the soaking conditions.
But the win was marred by an injury after just five minutes to the Bees on-loan Everton striker Conor McAleney, who was stretchered off with a suspected broken leg after a collision with defender Adam Chambers.
Button also came to his side's rescue late on when he bundled Romaine Sawyers' header around the post as Brentford looked to attack on the break.
- Sports & Recreation
- Adam Forshaw