The Saints got to a perfect start with James Ward-Prowse stepping up to convert an 11th-minute penalty after Nampalys Mandy's rash challenge on Shane Long in the area.
In first-half stoppage time, Long got a goal of his, doubling the visitors' advantage few minutes after they were reduced to ten men with Yan Valery sent off.
After the break, Claude Puel's side push for redemption saw Ndidi's body convert a cross from Ricardo Pereira in the 58th minute.
The former Genk midfielder, playing his 22nd Premier League game this season, was unlucky not to get his side an equaliser late in the game as his header from close range went off the target.
Ralph Hasenhuttl's side held on for an important victory at the King Power Stadium to help them move out of the relegation zone.
Meanwhile, seventh-placed Leicester will hope for a much better fortune when they visit the Molineux to take on Wolverhampton Wanderers next week.