Ока течет от Калуги в Серпухов. Река берёт начало из родника в селе Александровке Глазуновского района Орловской области, проходит по Среднерусской возвышенности, в верховьях имеет глубоко врезанную, преимущественно узкую речную долину со значительными уклонами. Сначала течёт в северном направлении и в Орле сливается с Орликом, в Тульской области сливается с Упой, возле Калуги при слиянии с Угрой делает резкий поворот на восток и после протекания через Алексин и Тарусу снова поворачивает на север, а затем около города Протвино опять поворачивает на восток. На участке от Серпухова до Ступина примерно вдоль Оки проходит граница Московской и Тульской областей. Возле города Коломны сливается с Москвой-рекой и далее, делая излучину, течёт на юг. В Рязанской области из-за холмистых местностей у Оки наблюдается заметная извилистость. Возле слияния с рекой Проней Ока, делая излучину, поворачивает направо, а после слияния с рекой Парой опять течёт на север, и, делая возле Касимова заметную большую излучину, продолжает течь на север, где на территории Ермишинского района в неё впадает река Мокша. Далее с заметными излучинами течёт, разделяя Владимирскую и Нижегородскую области, где протекает также через Муром, Павлово (в Павловском районе в неё впадает Клязьма) , Дзержинск. В конце своего течения Ока доходит до Нижнего Новгорода, где впадает в Волгу.