It rises in the Cascades in southeastern Linn County in the Willamette National Forest at . From this source, the confluence of Sevenmile and Squaw creeks, it flows briefly north, then generally west through the Western Cascades and Cascadia. It then flows a handful of miles before entering Foster Reservoir. At Foster Reservoir the Middle Santiam River joins the South Santiam. Downstream from the reservoir it flows west past Sweet Home, where it turns northwest, passing through the foothills into the Willamette Valley near Lebanon. It joins the North Santiam River from the southeast to form the Santiam approximately northeast of Lebanon, about east of the confluence of the Santiam with the Willamette River.