If cancer is fundamentally a genetic disease, how might an environmental factor such as smoking cause cancer?
Because cigarette smoke contains many carcinogens. Carcinogens can cause cancer by directly affecting the genome. Wikipedia has a list of those present in cigarette smoke, which includes classics such as lead, benzene, and formaldehyde, not to mention radioactive polonium.
There are carcinogens in smoke but they've not been shown to be the cause of cancer in smokers. Note that some smokers never develop cancer or heart disease; some have lived more than 100 years.
Just because something is classified as a carcinogen doesn't mean it causes cancer in everyone and doesn't mean a given exposure to a particular carcinogen has any effect at all. All smoking does is increase one's risk of developing cancer. That it increases risk is not a fact but the association between smoking and cancer is significant, statistically. (This means it meets certain mathematical criteria and is, therefore, not mere opinion).
Chromosomal replication is not perfect and a healthy cell can replicate only a limited number of times. Cancer is characterized (in part) by a loss of this control. When DNA mutates in a way that results in the loss of this control an otherwise-healthy cell (now a mutation) results. Smoking increases cell turnover and the increased turnover increases the likelihood this type of mutation will occur.
You can think of skin cancers in the same way. This is the reason an exposure resulting in a color change (sunburn, tanning including that from a tanning booth) increases the risk of skin cancer.
Over a typical lifetime we develop a handful of cancerous tumors. They're killed by our immune system. Symptoms of malignant cancer develop when the immune system hasn't been effective.