L'Olona è un fiume di 131 km lunghezza e di 1.038 km² di bacino il cui corso si sviluppa interamente in Lombardia.
Il fiume nasce in località Rasa, frazione di Varese, all'interno del Parco Regionale Campo dei Fiori.Attraversata l'alta pianura padana, giunge a Rho, dove alimenta il Canale Scolmatore di Nord Ovest. Entra poi a Milano, dove getta la maggior parte delle sue acque nel Lambro Meridionale. Nel tratto tra le sorgenti e Milano il fiume è detto anche Olona Settentrionale. Questo tratto del corso d'acqua termina a Milano, dove inizia a scorrere sotto il livello stradale. Qui le sue acque si dividono in tre rami principali, che confluiscono nella Darsena di Porta Ticinese, nel Lambro meridionale e nell'Olona meridionale. Infatti dal Lambro meridionale, più precisamente a Rozzano, nasce la roggia Olona, da cui deriva l'Olona inferiore o meridionale.
Questo corso d'acqua confluisce infine nel Po a San Zenone.
L'Olona giunge a Milano, attraversando dapprima i quartieri Gallaratese e T.8. Nel tratto sotto piazza Stuparich riceve la confluenza del torrente Pudiga (o Mussa). L'Olona bagna quindi San Siro, Lampugnano e si incanala sotto i viali della circonvallazione esterna ( viale Murillo, piazzale Brescia, viale Ranzoni, piazza Ghirlandaio, viale Bezzi, piazzale Tripoli, viale Misurata, piazza Bolivar, piazza Napoli, viale Troya, piazzale delle Milizie). In questo tratto il fiume dà origine ad un piccolo canale sotterraneo, creato durante i lavori di copertura del fiume, che va ad alimentare la Darsena di Porta Genova. Questo canale artificiale passa sotto via Costanza ed il Parco Don Giussani. Presso il quartiere milanese di San Cristoforo il fiume getta le sue acque nel Lambro Meridionale. Di fatto l'Olona ed il Lambro Meridionale vengono considerati parte dello stesso sistema idrografico.
L'Olona Meridionale, o Inferiore, nasce come Roggia Olona a sud di Milano nel Comune di Rozzano dal Lambro meridionale, e riceve le acque provenienti da numerosi fontanili, rogge, fossi e canali. In comune di Bornasco riceve il nome di fiume Olona Inferiore.
Probabilmente questo era l'alveo originario del fiume. Dopo aver attraversato la bassa pianura padana, l'Olona sfocia nel Po, a San Zenone.
L'alveo originale dell'Olona è stato modificato durante i secoli, soprattutto nell’area di Milano. Provenendo dal Seprio e dalla Burgaria, il fiume, dopo aver
passato Lucernate (frazione di Rho), toccava Settimo Milanese (una delle frazioni del Comune è chiamata "Cascine Olona") e Quinto Romano. Lambiva poi la zona est di Baggio, bagnava Cesano Boscone, Corsico, Assago,per poi attraversare la Pianura Padana nell'alveo attuale..
I romani deviarono il fiume a monte di Rho intorno al V secolo, l'Olona fu condotta, tramite un nuovo alveo a congiungersi con il torrente Lombra. Presso la Cascina Mojetta le acque si diramavano. La maggior parte andavano a sinistra, immettendosi poi nella Fossa Interna. Parte delle acque proseguivano, invece, a destra, seguendo l'antico alveo del Lombra, che assunse il nome di Lambro Meridionale.
Con l'arrivo a Milano del Naviglio Grande, il fiume Olona fu deviato: venne immesso nella Darsena di Porta Ticinese e non più nella Fossa Interna.
L'emissario della Darsena era la Roggia Ticinello, che in seguito confluiva nel Lambro Meridionale.
Venne mantenuto, seppur con portata ridotta, anche il ramo del fiume che si immetteva nella Darsena. Anche questo fu, però, tombinato. Negli anni Ottanta, con la creazione del Deviatore Olona,che immette le acque in eccesso del fiume nello Scolmatore di Nord-Ovest, venne tombinato anche il tratto dell'Olona tra l'ingresso in Milano ed i viali della circonvallazione occidentale.