Report: Swans 0 Bristol City 1
The Swans fell to their first defeat of the season as Andreas Weimann's goal after 30 seconds earned Bristol City victory at the Liberty.
The crucial moment of the game came in the opening minute as the visitors made a stunning start to this contest.
Niclas Eliasson sent in a low cross and the ball was knocked in by Weimann.
After a thrilling midweek draw with Leeds, the Swans didn't hit the performance levels they would have wanted against a solid Bristol City side.
Graham Potter made two changes with Joel Asoro and Tom Carroll in for Kyle Naughton and Leroy Fer, who dropped to the bench.
But it was Bristol City who looked the better side throughout, with Weimann's early strike giving them a perfect start.
They could have extended their lead through Eliasson's effort, but he was denied by Erwin Mulder's fine reaction save.
At the other end, the best the Swans could offer came in the final moments of the half as Bersant Celina drove a long-ranger wide.
But Mulder had to be alert once more as he padded Callum O'Dowda's effort wide.
Graham Potter made two changes at the break with Matt Grimes and Jefferson Montero being introduced.
Montero made some lively contribuitons, with his cross being headed wide by Jay Fulton while the winger put in another delivery which Mike van der Hoorn rose to head - but he was denied by Weimann's clearance on the line.
Celina also drove wide before Grimes saw his long-ranger tipped over by Niki Maenpaa.
Then came five minutes of added time, but the Swans failed to find a way through as they suffered their first defeat under Potter.
Swans: Erwin Mulder, Connor Roberts, Mike van der Hoorn (capt), Joe Rodon, Martin Olsson, Jay Fulton, Tom Carroll (Matt Grimes, ht), Bersant Celina, Joel Asoro (Jefferson Montero, ht), Barrie McKay, Oli McBurnie (Leroy Fer, 71).
Subs: Steven Benda, Kyle Naughton, Daniel James, Courtney Baker-Richardson.
Bristol City: Niki Maenpaa, Adam Webster, Josh Brownhill, Matty Taylor, Andreas Weimann, Marley Watkins (Callum O'Dowda, 31), Lloyd Kelly, Niclas Eliasson (Jamie Paterson, 80), Marlon Pack (capt), Tomas Kalas, Jack Hunt (Eros Pisano, 83).
Subs: Max O'Leary, Nathan Baker, Jay Da Silva, Liam Walsh.