This may be a known issue, and I don't have a save, but I had a stack of units in a city that included a werewolf. While processing the turn, the werewolf went barbarian. This pushed the entire stack of units out of the city, and caused the city to be captured by the barbarians. Workaround: Reload, and move the werewolf out of the city.
Now, I don't place any units in cities that might turn barbarian.
I think one of the following should be implemented: units cannot turn barbarian while in cities, or if a unit becomes owned by the barbarians, a check is done to see if it is in a city, and push it out if it is. It can then choose to attack the city at that point (which would cause it to be taken over if that was the only unit in the city, of course).