Seventeen-year-old substitute Ryan Brooke scored Oldham's winner with his first touch in league football.
Troy Deeney had headed Walsall into the lead after just 30 seconds before hitting the bar with a 25-yard strike.
But Deane Smalley drove in a loose ball from Ian Westlake's header to level the scores as half-time approached.
Brooke then drilled in from Smalley's pass to ensure that manager Joe Royle finished his second spell as Latics boss with his first win in nine games.
Walsall: Ince, Weston (Boertien 46), Smith, Gerrard, Palmer, Taundry, Mattis, Hughes (Bradley 78), Zaaboub (Craddock 60), Nicholls, Deeney. Subs Not Used: Gilmartin, Davies.
Goals: Deeney 2.
Oldham: Fleming, Lomax, Hazell, Gregan, Black (Eardley 46), Lee (Wolfenden 67), Allott, Maher, Westlake, Whitaker (Brooke 71), Smalley. Subs Not Used: Crossley.
Goals: Smalley 44, Brooke 74.
Att: 4,807
Ref: Colin Webster (Tyne & Wear).
What are these?
Print Sponsor
Bookmark with:
What are these?