Many adverse drug reactions (ADRs) are caused by drug-drug interactions (DDIs), meaning they arise from concurrent use of multiple medications. Detecting DDIs using observational data has at least three major challenges: (1) The number of potential DDIs is astronomical; (2) Associations between drugs and ADRs may not be causal due to observed or unobserved confounding; and (3) Frequently co-prescribed drug pairs that each independently cause an ADR do not necessarily causally interact, where causal interaction means that at least some patients would only experience the ADR if they take both drugs. We address (1) through data mining algorithms pre-filtering potential interactions, and (2) and (3) by fitting causal interaction models adjusting for observed confounders and conducting sensitivity analyses for unobserved confounding. We rank candidate DDIs robust to unobserved confounding more likely to be real. Our rigorous approach produces far fewer false positives than past applications that ignored (2) and (3).