Both put untreated or partially treated sewage into a waterway. One is a known, permitted design condition in aging combined sewer systems. The other is essentially always a reportable failure — and the difference comes down to whether the pipe was ever supposed to carry that flow in the first place.
A combined sewer overflow (CSO) happens in a combined sewer system — one pipe network carrying both sanitary sewage and stormwater runoff together, common in older U.S. cities built before roughly the 1950s–70s. During heavy rain, the combined flow can exceed what the interceptor pipe and treatment plant can handle, so the system deliberately spills the excess — diluted sewage and stormwater together — at a built-in regulator structure, straight into a river, lake, or estuary. A sanitary sewer overflow (SSO) happens in a separate sanitary sewer system — a pipe that was built to carry only sewage, with stormwater running in its own, entirely separate storm drain network. An SSO occurs when something in that sanitary-only pipe fails: a grease or root blockage, a collapsed or undersized line, or infiltration/inflow (I/I) that overwhelms it during wet weather — and untreated sewage escapes through a manhole, a cleanout, or a broken pipe, because that pipe was never built with anywhere else for the excess to go.