There's a product called Ozium that cruise ships use to remove the smell of smoke from cabins. A testament to how good it works is that Carnival Cruise Lines, for example, doesn't designate smoking and non-smoking cabins, and most cabins don't have fresh air.
You can
buy it in automotive stores.