Город Порхов был основан в 1239 году как деревянная крепость «Порховский городок». Его основал новгородский князь Александр Ярославич, который позже вошел в историю как Александр Невский. По задумке Александра крепость должна была стать одним из звеньев в цепи оборонительных сооружений на реке Шелонь, чтобы сторожить юго-западные подступы к Новгороду.
В 1387 году здесь были построены стены и башни новой, уже каменной, крепости, которая дошла до наших дней.
За свою историю город неоднократно подвергался набегам. В боях за город сходились немцы, литовцы, шведы, поляки и русские.
27 ноября 1905 года в городе был построен «Железный мост», который служил пешеходной и автомобильной переправой через реку Шелонь. Строительство обошлось в 90 605 рублей, средства были собраны порховскими купцами и мещанами. Вместе со строительством моста были благоустроены городские набережные и устроена часовня.
Порховский уезд в своё время насчитывал множество дворянских усадьб. До наших дней дошло лишь несколько — бывшая усадьба графов Строгановых, Холомки.
В годы Гражданской войны Порхов неизменно оставался в руках сил Красной армии.
Во время Второй мировой войны город был оккупирован немцами.
13 ноября 1943 года в городском кинотеатре русский партизан Чехович устроил одну из самых масштабных диверсий за всю войну.
Когда немцы заполнили весь зал и расселись смотреть кино, он взорвал крышу кинотеатра, мгновенно похоронив около 550 солдат. За успешное исполнение операции Чеховича представили к званию Героя Советского Союза.
Порхов был освобождён 26 февраля 1944 года.