The Saddlers remain 14th in League One and have now lost just once in eight.
Hoping to avoid a fifth successive defeat, Justin Edinburgh’s Gills made the brighter start with Deji Oshilaja heading the game’s first chance wide from a Bradley Dack set-piece.
Gillingham spurned a good opportunity on 18 minutes, when Ryan Jackson’s long throw dropped to Max Ehmer, unmarked, but he could only fire straight at Neil Etheridge from an acute angle.
The follow-up from Ehmer was scrambled wide, and the same man curled high over the bar moments later from Dack’s short free-kick.
The home side were beginning to apply some pressure and on 25 minutes Gillingham made the breakthrough, McDonald nodding home Scott Wagstaff’s far-post cross from close range.
Walsall - chasing a fourth straight win and a first away from home in the league – immediately went on the offensive, with Kieron Morris testing Jonathan Bond with an angled left-footed drive.
Erhun Oztumer then curled wide from the edge of the box and Jim O’Connor also fired off target as the Saddlers, with just one defeat in their previous seven, pushed for a leveller.
Gillingham threatened again before the interval, when Dack headed straight at Etheridge after Jackson’s driven cross wasn’t dealt with.
Half-time: Gillingham 1-0 Walsall
Chances proved in short supply at the start of the second period. Gills scorer McDonald headed off-target from Dack’s inviting cross, before Andreas Makris nodded a Jason McCarthy delivery wide at the other end.
Out of nowhere, Walsall drew level on 59 minutes when Oztumer’s curling 20-yarder was spilled badly by Bond and Moussa reacted quickest to tap home his second Saddlers goal.
Buoyed by the equaliser, Jon Whitney’s side then enjoyed a sustained spell of pressure, without being able to create anything clear-cut.
After weathering the storm, Gillingham could have regained the lead on 74 minutes but Etheridge made a fine save to smother McDonald’s effort following a good run and pass from Oshilaja.
The home side went closer still eight minutes from time, when Dack’s curling 25-yard free-kick was superbly tipped onto the bar by a flying Etheridge.
That proved the final real piece of action, as the match petered out for a draw.
Full-time: Gillingham 1-1 Walsall
Team: Etheridge, Edwards, O’Connor, Toner, Laird, Chambers, Toner, Moussa (Ginnelly 86’), Morris, Oztumer, Makris.
Subs not used: MacGillivray, Dobson, Osbourne, Kinsella, Preston, Roberts.