Sunderland beat Barnsley in battle of Portsmouth's League One rivals
The home side powered into a 3-1 lead in the first half.
Aiden McGeady scored after 19 minutes and then the highly-rated Josh Maja made it 2-0 a minute later.
Lyden Gooch added the third goal on 32 minutes and it looked set to be a rout.
But Barnsley dug in.
Kieffer Moore netted on 41 minutes.
He then grabbed his second on 61 minutes.
Advertisement
Hide AdAdvertisement
Hide AdSunderland wrapped up the win with a fourth goal as Luke O'Nien scored in the 83rd minute.
Barnsley are now fifth while Sunderland remain second, four points behind Pompey after Kenny Jackett's men got the win against Walsall.
Luton have moved up to third position with a 4-0 thrashing of Bradford City who are bottom of the table on goal difference.
James Justin made it 1-0.
Elliot Lee then scored twice and Harry Cornick added the fourth.
Advertisement
Hide AdAdvertisement
Hide AdPeterborough are fourth after they edged a 1-0 success at home to AFC Wimbledon.
Marcus Maddison scored the only goal of the game on 60 minutes.
Charlton earned a 2-1 win at Burton Albion and they are sixth.
Wycombe won 2-1 at Accrington Stanley and Gillingham won 2-1 at Bristol Rovers.
Advertisement
Hide AdAdvertisement
Hide AdFleetwood thumped Coventry 3-0 at home while Doncaster beat Blackpool 2-0 with goals from Herbie Kane and John Marquis.
Shrewsbury piled more pain on visitors Plymouth.
The home side earned a 2-0 success over the lowly Pilgrims.
Oxford beat Pompey's FA Cup opponents Rochdale 4-2.
 Marcus Browne got two goals for Oxford.Â
 Southend saw off Scunthorpe 2-0.  Â