To lay siege to a town belonging to your foes, just select a hero with an army and click on the targeted town on the world map. An options list will pop up around the town, and you will be able to click on the "Siege town" icon to send your hero and besiege the town. Be careful though; your army's power must generally be superior to the whole army defending the town, or your hero's siege will fail. Consider scouting the targeted town troops before trying to lay siege.