Nathan Ellington hit a late winner to keep Wigan's promotion push alive.
Jason Roberts found Ellington who drove home from 20 yards to finally beat inspired Walsall keeper James Walker.
Walker had denied Jimmy Bullard, Jason De Vos, Andy Liddell and Roberts before the goal and Alan Mahon, Ellington and Roberts afterwards.
Liddell almost doubled the lead when his free-kick hit the woodwork while Walsall's best effort came from Simon Osborn who shot over from 35 yards.
The result leaves Wigan in third, three points behind West Brom, who lost at home to Rotherham, while Walsall are 19th, four points above the relegation zone.
It was an impressive performance from Paul Jewell's side, who always seemed likely to win once they took control of midfield after 15 minutes.
A series of crosses from Leighton Baines, Roberts and Mahon kept Walsall on the back foot and helped create the chances which were thwarted by Walker.
Although Wigan did not have an effort on goal until the 23rd minute, when Paul Ritchie blocked Mahon's volley, they upped the pace after the break.
Apart from Walker's saves, Roberts somehow missed from six yards and it looked like one of those afternoons for Wigan until Ellington converted his 16th goal of the season.
Wigan: Filan, Eaden, Breckin, De Vos, Baines, Liddell, Jarrett,
Bullard, Mahon, Jason Roberts, Ellington. Subs: Walsh, Mitchell,
Jackson, McMillan, McCulloch.
Walsall: Walker, Emblen, Ritchie, Carbon, Bazeley, Osborn,
Kris Taylor, Corica, Aranalde, Wales, Leitao. Subs: Petterson,
Matias, Birch, Wright, Bennett.
Referee: H Webb (S Yorkshire).