Centre-half Michael Turner scored his third goal in seven games to give the Shrimpers the lead after three minutes.
Marc-Antoine Fortune doubled his side’s advantage with a second in the 36th minute of the League One clash.
Substitute James Vaughan pulled a goal back for the leaders, but Southend restored their two-goal advantage when Michael Kightly scored.
Shrewsbury were unable to capitalise on Wigan’s defeat as Plymouth beat them 2-1 at the New Meadow.
Denver Hume: Portsmouth's expensive forgotten man and why former Sunderland defender really could be one for the future
'Real driving force... lion-hearted display... classy presence' - Neil Allen's Portsmouth ratings from 3-0 Carabao Cup win at Cardiff
'We wanted to show him a bit of love' - Portsmouth-based Spurs fans' terrific gesture to ensure Dane Scarlett feels at home on the south-coast
League One latest: Portsmouth linked duo set for Oxford United and Lincoln moves, Southampton prospect joins Blues rivals as Ipswich land former Blackpool and Derby veteran
'We’ve got a real problem': Portsmouth boss reveals headache after career first at Cardiff
The home side led 1-0 after Carlton Morris gave Shrewsbury the lead in the third minute.
But Rotherham rallied to score twice in three second-half minutes through Jamie Ness and Zak Vyner.
Blackburn made ground on the top two with a point gained from their 2-2 draw at home to Oldham.
Rovers found themselves 2-0 down after Duckens Nazon’s first half double.
But Charlie Mulgrew started the comeback in the 63rd minute.
Adam Armstrong equalised with 19 minutes remaining and while Oldham were reduced to 10 men in the 82nd minute following Wilfried Moimbe’s red card, Blackburn couldn’t find a winner.
Rotherham moved to within a point of Scunthorpe following their 2-1 win at Glanford Park.
Goals from Joe Newell and Semi Ajayi gave the visitors a 2-0 lead before Lee Novak came off the bench to pull a goal back for United.
Ten-man Bradford drew 2-2 with Bury at Valley Parade.
Matthew Kilgallon was sent off with eight minutes to play with the scores level at 1-1.
Timothee Deing opened the scoring for City before Nathan Cameron equalised for Bury.
Shay McCarton’s goal looked to have won the game for the 10 men of Bradford, but George Miller earned Bury a point five minutes into injury time.
Doncaster left it late to draw 1-1 with Charlton at the Keepmoat Stadium.
Matty Blair struck four minutes into injury time to cancel out Patrick Bauer’s opener for Charlton in the 18th minute.
Gillingham also left it late to earn a point at home to Peterborough.
The visitors led through Danny Lloyd’s goal in the 69th minute.
But Max Ehmer equalised in the third minute of added on time.
Ellis Harrison scored the winner for Bristol Rovers who came from a goal down to beat Oxford 2-1.
Kyle Bennett cancelled out Joe Rothwell’s opener for Oxford.
Armand Gnanduillet earned Blackpool a point after they drew 2-2 with Walsall.
Joe Edwards gave Blackpool the lead before Nathan Delfouneso levelled for the visitors.
Jon Guthrie gave Walsall the lead before Gnanduillet earned the home side a point.
Northampton beat AFC Wimbledon 3-1 at Kingsmeadow to climb above their opponents.
Matt Grimes’ penalty gave the visitors the lead before Adedeji Oshilaja equalised two minutes after half-time.
Goals from Matt Crooks and Daniel Powell wrapped up the win for Northampton.