Although Geneva voted slightly in favour, results from the country's other 25 cantons showed a majority of voters rejected a full ban.
Hotels, restaurants and bars are allowed rooms for smokers but critics say workers' health is at risk.
Restrictions introduced two years ago were watered down after lobbying from the catering trade and tobacco firms.
In some cantons, more than 70% of voters rejected the ban, according to Geneva newspaper La Tribune de Geneve. Geneva itself bucked the trend by supporting the ban by 52% to 48%.
Comment: A very interesting result. Geneva is the headquarters of the UN and many large multinational firms have offices there, a factor that undoubtedly attracts higher percentages of psychopaths and other character-disturbed people.
Geneva and seven other cantons have already imposed their own comprehensive bans on indoor smoking in places of employment while the remaining, smaller cantons have been less restrictive.
Comment: It would be interesting to see how many national smoking bans remain standing after they were all put to a public vote.