Del norte, donde se sitúa su nacimiento, al sur, donde desemboca, el río atraviesa los municipios onubenses de Nerva, Minas de Río Tinto, El Campillo, Zalamea la Real, Berrocal, Valverde del Camino, Paterna del Campo, Niebla, La Palma del Condado, Villarrasa, Bonares, Trigueros, Lucena del Puerto, San Juan del Puerto, Moguer, Palos de la Frontera y Huelva.