The Latics took an early lead after just seven minutes as Nick Powell headed home his eighth goal of the season.
Dan Burn’s header then doubled Paul Cook’s troops’ lead before the break as the home side claimed their third league win on the bounce.
Peter Pawlett looked like he had won the game for MK Dons with a goal 10 minutes into the second half but Shaun Whalley fired home a late equaliser to keep the Shrews in touch with the leaders.
Blackburn Rovers moved up to third after a topsy-turvy 3-2 win at Peterborough United.
Tony Mowbray’s side extended their unbeaten run to nine games thanks to Charlie Mulgrew’s header – taking his tally to eight for the season – and a double from Bradley Dack.
Steven Taylor had opened the scoring for the hosts as he headed Marcus Maddison’s corner in at the far post, while Jack Marriott pulled one back for Posh at the death.
However, any chance of snatching a draw was blighted when Jack Baldwin was sent off for a second bookable offence.
Scunthorpe United dropped to fifth following a 1-0 defeat at Walsall.
Kieron Morris netted the winner in the 13th minute for the Saddlers.
Bradford City held on to edge a seven-goal thriller 4-3 at home to Rochdale.
Four goals were scored in a frantic five-minute spell just before the break as the hosts led 3-2 at half-time.
Matt Kilgallon put Bradford ahead early on but it was Charlie Wyke’s 40th-minute header that brought the game to life, with Ian Henderson pulling one back a minute later and Dominic Poleon’s close-range effort making it 3-1 before Henderson’s second on the stroke of half-time reduced the deficit again.
Steve Davies equalised 15 minutes from time following a solo run but Tyrell Robinson notched the winner as the Bantams moved up to fourth.
The win also ended Bradford’s run of three consecutive home defeats.
Oxford United stole a late three points with a last-gasp winner from Josh Ruffels in a 1-0 home clash with Doncaster Rovers.
The game appeared to be heading for a stalemate but Ruffels netted with virtually the last kick of the game at the Kassam Stadium.
Bristol Rovers eased past Southend United 3-0.
Billy Bodin, Ellis Harrison and Liam Sercombe were all on the mark for the Pirates at the Memorial Stadium.
Rotherham United claimed a thrilling comeback win over Blackpool.
The Tangerines went ahead through defender Kelvin Mellor’s third goal from as many games.
However, the Millers refused to be beaten.
David Ball levelled on 76 minutes before he bagged the winner four minutes from time.
Oldham Athletic fired five past a struggling Northampton Town side, who dropped to second bottom as a result of a 5-1 defeat at Boundary Park.
Jack Byrne scored either side of Tope Obadeyi’s close-range header to make it 3-0 at the break.
Although Sam Foley pulled one back for the Cobblers, further goals from Gevaro Nepomuceno and Craig Davies added the gloss to the Latics’ success.
Former Pompey loanee Toumani Diagouraga scored a last-minute winner as Plymouth moved off the bottom with a 2-1 victory over fellow strugglers Gillingham at Home Park.
Meanwhile, the clash between Bury and Wimbledon at Gigg Lane was postponed following heavy snow overnight.