A bad O2 will cause soot because it's unburned fuel. The ECU sees the car as running really lean because there is no O2 signal so it richens up the air/fuel mixture to compensate. Fixing the O2 problem will both fix your smoking problem and give you better gas mileage.