Se aloittaa matkansa Ranualta Simojärvestä, virtaa yläjuoksun erämaisten ja asumattomien maiden halki ensin keskijuoksulle, jossa Sääskijärvi ja Kaitajärvi laskevat jokeen ennen ensimmäisen sivujoen, Kelukkajoen, yhtymistä.
Matka jatkuu Toljanjärven, Saarijärven, Saukkojärven ja Juurikkajärven kautta Portimojärvelle. Tässä välissä toinen sivujoki, Kämäjoki, laskee jokeen Saukkojärven ja Juurikkajärven välissä. Portimojärven kohdilla myös Majavajoki ja Ylijoki yhtyvät pääuomaan.
Portimojärven jälkeen maisema muuttuu: Erämaajoen ympärille alkaa piirtyä maanviljelyksiä ja rantapeltoja. Ruonajoki ja Suhankojoki ehtivät vielä yhtyä jokeen Ranuan puolella, ennen kuin vesi suhahtaa Simon kuntarajan ylitse.
Nyt suunnataan jo kohti alajuoksua. Jokeen yhtyvät vielä Tainijoki ja Kuivasjoki, ennen kuin vesi virtaa Simon kuntakeskuksen halki Perämereen.