Fulham loanee Matt Smith was on the scoresheet for the second game running as his brace helped keep Bristol City top of League One with a win at Gillingham.
The ex-Leeds United frontman netted twice before half time to put the Robins in control at the Priestfield Stadium, before Cody McDonald pulled a goal back for the hosts.
However, Scott Wagstaff added a third for City to seal the victory and leave the Cider Army one point clear of the chasing pack.
MK Dons dropped out of the automatic promotion places after falling to a surprise loss at home to Walsall.
Karl Robinson's men, who are the division's top scorers, fell behind early on to a Darren Potter own goal. Tom Bradshaw then scored twice in 15 minutes to send the Dons to their first defeat in 12 games.
Swindon Town kept pace with Bristol after Andy Williams scored his 13th goal of the season to give the hosts a hard-fought victory over Port Vale at the County Ground.
Preston North End leapfrogged MK Dons into third place, but needed Jermaine Beckford's second goal is as many games to rescue a point against an improving Crewe Alexandra.
Bradford City kept up their impressive run, and made ground on the top four teams, with a narrow win against Notts County at Valley Parade. Billy Knott's first-half strike proved enough for the Bantams to move to within eight points of MK Dons.
Playoff-chasing Rochdale were condemned to their second defeat of the Christmas period after losing at home to mid-table Fleetwood Town. Goals from Mark Roberts and Josh Morris set the Cod Army on their way to three points at Spotland.
Crawley Town's first game since John Gregory stood down as manager ended in a goalless draw against fellow strugglers Colchester United, although the point was enough to see the Sussex outfit leapfrog Leyton Orient and move out of the bottom four.
Coventry City remain just above the drop zone after they played out a stalemate against Chesterfield at the Ricoh Arena.
Peterborough United are within two points of the playoff places thanks to a goalless draw against Doncaster Rovers at London Road, which ended a run of four consecutive home defeats for Posh.
Sheffield United's home game with Scunthorpe United was postponed on health and safety grounds, due to icy conditions around Bramall Lane.
Results in full: Bradford City 1–0 Notts County, Coventry City 0–0 Chesterfield, Crawley Town 0–0 Colchester United, Crewe Alexandra 1–1 Preston North End, Gillingham 1–3 Bristol City, MK Dons 0–3 Walsall, Peterborough United 0–0 Doncaster Rovers, Rochdale 0–2 Fleetwood Town, Sheffield United P-P Scunthorpe United, Swindon Town 1–0 Port Vale