De oorsprong van Zoutleeuw zou een pre-romeinse vesting op de "Casteelberghe" geweest zijn. De heerlijkheid werd in de 11de eeuw door de graven van Leuven verworven.
De stad was door moerassen omgeven, maar had een gunstige ligging tussen Tienen en Sint-Truiden op de oude weg Keulen-Brugge.
De eerste omheining werd tijdens de 12de eeuw opgetrokken. Daarvan zijn een gracht achter het stadhuis, kelderverdieping ("heksenkot" in het gehucht Bottely) en een toren van de Sint-Truidenspoort, palend aan het stadhuis, op de hoek van de Markt en de Betstraet, overgebleven. Van 1330 af werd aan de bouw van een grotere omwalling begonnen.
Zij omsloot ook een Sint-Sulpitiuskerk (destijds op een verhevenheid dicht bij het station, ten hoogte van Bottely). Verbeteringen werden in 1507 en 1552 aangebracht. Resten van deze versterkingen vindt men nog in de muur van het ziekenhuis (aan de Gete). Een citadel van ingenieur Van Marc voltooide in 1671 het verdedigingsstelsel aan het Scholierendal (voormalige Sint-Sulpitiuskerk).
De lakennijverheid ontwikkelde zich tijdens de 13de eeuw ondanks strubbelingen met Luik en Sint-Truiden. In 1316-1317 werd de hal gebouwd (verscheidene keren van functie veranderd, thans rijkswachtbureau).
De economische inzinking tijdens de 15de eeuw, de godsdienstoorlogen tijdens de 16de eeuw, de Europese conflicten onder Louis XIV tijdens de 17de eeuw en de verzanding van de Gete veroorzaakten de verarming van de stad, die bovendien in 1676, 1693 en 1713 door brand werd geteisterd.
Zoutleeuw werd aldus tijdens de moderne tijden een klein regionaal centrum. Het leeft binnen de grenzen van zijn vroegere omwalling en heeft zijn middeleeuwse luister nooit opnieuw bereikt.