Hlavní nádraží leží ve východní části města na třech tratích; vede odsud deset vleček do průmyslových podniků. Stanice je součástí IDSOK a zastavují tu osobní, spěšné vlaky a rychlíky do Olomouce, Brna, Zábřehu, Šumperka i na trať do Chornic a Dzbelu. Začátkem 21. století prošla hala rekonstrukcí — nová čekárna, zázemí a obchody.
Stanice vznikla na odbočce z trati Brno–Přerov, která se odděluje v Nezamyslicích a pokračuje do Olomouce; první osobní vlak přijel 1. července 1870, stavbu i provoz zajišťovala Moravskoslezská severní dráha. V roce 1886 přibyla trať do Litovle a Červenky, v roce 1889 Moravská západní dráha do Chornic s pokračováním do České Třebové. Začátkem května 1945 byl areál poničen boji a bombardováním; v letech 1947–1952 vyrostla na stejném místě nová budova ve stylu poválečného funkcionalismu podle návrhu Jaroslava Otruby, s hotelem a domy pro železničáře, s plastikou Vladimíra Navrátila na štítu haly. Elektrický provoz začal 23. ledna 1993.