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