Die Gegend war schon zur frühen Steinzeit durch Menschen besiedelt. Neolithische Bewohner dürften bereits 5.000 Jahre v. Chr. in dieser Gegend Ackerbau betrieben haben. Eine kontinuierliche Besiedlung begann etwa im 10. Jahrhundert. Durch Münzfunde geht man davon aus, dass der Ort zu diesem Zeitpunkt an einem wichtigen Handelsweg, der Bernsteinstraße, lag. 1938 fand ein Junge bei der Kartoffelernte am Hügel Strážné den Keltscher Münzschatz (Kelečský poklad). Die etwa 1500 ganzen und halben Münzen mit einem Gewicht von 43,3 Dekagramm stammen aus der Zeit zwischen 1002 und 1020.
Der erste schriftliche Nachweis des Ortes stammt aus dem Jahr 1131.
Unter Bischof Bruno von Schaumburg erhielt die Stadt ein völlig neues Gesicht. Die Siedlung wurde komplett umgebaut, Neu Keltsch angelegt. Während der Kriege zwischen den mährischen Markgrafen Jobst und Prokop im 14. Jahrhundert und vor allem während der Hussitenkriege kam es zu großen Verwüstungen der Gegend und der Stadt.
Die Situation verbesserte sich erst wieder im 16. Jahrhundert als das bischöfliche Anwesen zusammengelegt wurde. Die Stadt erhielt eine Brauerei, die ersten handwerklichen Zünfte ließen sich nieder und 1580 befreite man die Siedlung von Frondiensten. Das langsame Aufblühen wurde durch den Dreißigjährigen Krieg unterbrochen. Keltsch wurde mehrmals geplündert und niedergebrannt, die Bevölkerung schrumpfte auf ein Fünftel zusammen.
Nach dem Krieg setzte sich der Verfall fort. Die Stadt verlor ihre Privilegien, 1750 verbot Bischof Ferdinand Julius von Troyer die Führung der Bezeichnung Stadt. Diese Bezeichnung durfte erst nach zahlreichen Prozessen mit den Olmützer Bischöfen Ende des 18. Jahrhunderts wieder geführt werden.
Zu Beginn des 19. Jahrhunderts begann man im Ort mit der Herstellung von Pfeifen. Die Ansiedlung der Firma Thonet & Kohn blieb aber eine Ausnahme. Keltsch selber behielt das Bild einer landwirtschaftlich geprägten Stadt.
1954 wurden Kelč die Stadtrechte wieder aberkannt und 1994 wieder zuerkannt.
Stadtgliederung
Kelč besteht aus den Ortsteilen Babice (Babitz), Kelč (Keltsch), Komárovice (Komarowitz), Lhota (Ellhotten) und Němetice (Niemetitz).