Conor McAleny (33) cancelled out Shrewsbury midfielder Sullay KaiKai's 21st-minute opener before Wigan struck three times in the space of eight minutes early in the second half through Yanic Wildschut (58), Jason Pearce (61) and Will Grigg's penalty.
Grigg picked himself up to convert in the 66th minute having been hauled down by Shrewsbury defender Zak Whitbread, who was shown a straight red card. Grigg added his second in the final minute.
Wigan's fourth straight win lifted them a point clear of overnight leaders Burton, whose 10 men were held 1-1 by Bury at the Pirelli Stadium.
League One
Yakubu Aiyegbeni returns to English football with Coventry
13/02/2017 AT 14:38
Ryan Lowe headed Bury into 74th-minute lead, three minutes after Burton midfielder Hamza Choudhury had been sent off for his second yellow card, but substitute Tyler Walker struck for Nigel Clough's side in stoppage time.
Walsall failed to take full advantage as they lost 2-0 at Sheffield United, while Gillingham were held to a goalless draw at home against Coventry.
Chris Basham (31) headed the Blades in front at Bramall Lane before Billy Sharp crashed home his 18th of the season five minutes later.
Millwall dropped to sixth after drawing 0-0 at Colchester with Bradford moving above them into fifth spot following a 1-0 home win against in-form Scunthorpe.
Steven Davies' fifth goal in eight appearances broke the deadlock for Bradford in the 68th minute and sent Scunthorpe to a first defeat in nine in boss Graham Alexander's second game in charge.
Blackpool eased their relegation fears and dented Southend's play-off hopes with a 2-0 win at Bloomfield Road.
Mark Cullen, who scored the winner on Monday at Doncaster, headed Blackpool in front four minutes into the second half and Leicester loanee Jacob Blyth (79) scored his first goal for the club.
Niall Canavan struck deep in time added on to salvage Rochdale a 2-2 home draw against Doncaster.
Callum Camps struck a 43rd-minute opener for Rochdale, but Mitchell Lund (57) and Andy Butler (63) were on target for Doncaster, who halted a seven-game losing run.
Peterborough secured their third straight win and made life even more difficult for bottom club Crewe with a 3-0 victory at London Road.
Harry Beautyman followed up his 14th-minute opener by heading his second five minutes before half-time and Lee Angol added Peterborough's third in the 67th minute.
Nick Ajose's 23rd goal of the season rescued a point for Swindon in a 1-1 home draw against Fleetwood.
Fleetwood made a flying start thanks to Wes Burns' sixth-minute header but Ajose levelled from close range in the 68th minute.
Chesterfield registered their first win in five with a 4-2 home win against Port Vale.
The Spireites hit back through Sheffield United loanee Jamal Campbell-Ryce (47) and Sam Hird (60) after Ajay Leitch-Smith's 12th goal of the season had given Port Vale an interval lead.
JJ Hooper (70) fired Port Vale level but Gboly Ariyibi restored Chesterfield's lead three minutes later and Jay O'Shea (83) added a fourth.
League One
Ched Evans signs for Chesterfield
20/06/2016 AT 13:42
League One
Barnsley back in Championship after beating Millwall in play-off final
29/05/2016 AT 12:54