Defeat leaves the Minstermen down in 19th spot in League Two.
Southend took the lead on nine minutes, David Winfield punished for his foul on Jack Payne and Myles Weston tucked away the penalty.
But York equalised before the break, captain Russell Penn heading home.
Kevan Hurst nudged Southend back in front on 52 minutes and Payne confirmed victory 12 minutes from time.
Winfield atined for his earlier error with a consolation goal but Southend held out for all three points.