Swansea took more from this draw than last season's play-off finalists.
Bristol City, who have now won only once in nine starts, were kept in the game by two brilliant saves inside a minute by their Brazilian keeper Adriano Basso late in the second half.
Equally the home side felt denied when Dorus de Vries parried a Stern John header at his near post.
City argued the ball had crossed the line but found no support from the match officials.
The Robins brought in Cole Skuse after a two-month absence for the injured Lee Johnson and his freshness gave their midfield a more vibrant look.
There was added width too from Michael McIndoe and Ivan Sproule, but in an industrious opening half de Vries had only one save to make - a smart one from a McIndoe free-kick which took a deflection.
A promising Welsh raid broke down with a high ball from Federico Bessone flying well over the bar and he hardly had another opportunity to impress before being stretchered off with a leg injury after sprawling on the edge of the centre-circle with no-one near him.
It caused a major re-design of Swansea's back four but brought no bonus for the home side whose finishing was way off target.
In the first hour their best shot came from centre-back Jamie McCombe. From the right of goal he struck a knock down from John well enough but it flew the wrong side of the far post.
It sparked an earnest Bristol City spell which saw a Marvin Elliott header cleared off the line by Ashley Williams after McIndoe had got in behind defenders down the left.
Williams rescued Swansea soon after by once again clearing from Skuse, but as the pace stepped up Jordi Gomez, Darren Pratley and sub Gorka Pintado all went close for the visitors.