The away side enjoyed the better of the early stages and but for a series of fine saves from David James, Southampton may have been ahead inside the opening ten minutes.
Nicky Maynard went close for the home side after 23 minutes but his shot from the edge of the area drifted high and wide.
Southampton continued to enjoy the better of the first half with Adam Lallana causing all sorts of problems for the Bristol City defence.
However, it was the home side who opened the scoring through Albert Adomah in the 48th minute when he fired in an effort from the edge of the area.
Southampton continued to press in the latter stages but it was Bristol City who added a second through Nicky Maynard after 84 minutes.
The result moves Bristol City to within a point of safety, while Southampton remain top.