19 июня английские войска двинулись к Шанхаю на пароходах двумя колоннами. Не доходя до города примерно километр, левая колонна была обстреляна с батареи, расположенной прям у среза воды. К счастью для англичан, артиллеристы китайцев промахнулись, поскольку ядра, летевшие над уровнем воды, по идее должны были попасть в район ватерлинии. Пароходы в ответ открыли ураганный огонь, был срочно высажен десант, который зафиксировал, что китайцы просто сбежали при первых выстрелах. Далее пароходы подошли к Шанхаю, где высадили морских пехотинцев на дамбе. Это послужило сигналом богачам Шанхая, которые со всей возможной скоростью дернули из города куда подальше. Бедняки, видя бегство правительства и солдат, начали необузданный грабеж.
С двух сторон в Шанхай вступили английские войска, и после небольшого сопротивления большой город пал. На местных купцов, не успевших бежать, наложили контрибуцию в 300 тысяч песо. Англичане перекрыли движение вверх по реке, чтобы шустрые китайские товарищи не сбежали с товаром. Были захвачены крупные военные склады, большие запасы провианта, 540 орудий, несколько сотен пудов пороха. При осмотре пушек некоторые оказались обычными железными ржавыми трубами, сверху покрытыми налетом меди. Судя по всему, кто-то из производителей пушек получил суперприбыли, продав под видом дорогих медных пушек кучу хлама. Жители утверждали, что за несколько дней до прихода англичан у них произошла драка с китайскими войсками, требовавшими субсидии для защиты города, а между тем уже тогда приготовившихся его покинуть.
Перед выходом эскадры из Шанхая стороны обменялись воззваниями к народу. Император писал, что война начата англичанами, поскольку они хотят продолжать травить опиумом китайский народ. Он говорил, что варвары не так страшны, как кажется, и призывал казнить тех, кто бежит с поля боя. Поттингер в декларации, написанной на китайском языке, указывал на притеснения, испытываемые англичанами, и ставил условием мира: уплату военных издержек, возмещение всех денежных ущербов, дружественные торговые сношения между обоими государствами и уступку Англии на вечные времена группы островов, необходимых для устройства морской станции.
В начале июля британская армада и 70 судов с 9000 человек десанта двинулась вверх по реке Янцзы к Нанкину. 16 июля пароходы подошли к городу Чин-кианг-фу (Чженьцзян), последнему укреплению перед Нанкином. 19 июля подошли линейные корабли, их атаковали брандером, который в последний момент успели отвести британские шлюпы. 22-го город был взят. Перед городом произошло генеральное сражение, силы англичан составляли 7000 человек, китайцев — 15000, при этом 4000 были маньчжурской императорской гвардией. Сражение было совершенно нерешительным. Китайцы не принимали ближнего боя и отступали, самые страшные потери англичанам нанесла погода — 25 человек погибли от солнечного удара. Китайские батареи были обстреляны ракетами, серьезное сопротивление оказали только маньчжуры, которые вели довольно меткий оружейный огонь. Они, не обращая внимания на потери, наносили англичанам большие потери и не пускали захватчиков в город. Решило дело штыковая атака сипаев и морпехов, маньчжуры дрогнули, и англичане ворвались в город.
Обе стороны схлестнулись в беспощадном уличном бою. И маньчжуры, и англичане использовали огнестрельное оружие, ручные гранаты, сабли, ножи, штыки. Особенно британцев пугали тяжелые прямые сабли китайской гвардии, которыми гвардейцы владели в совершенстве, срубая головы одним ударом. Гингальсы также сыграли свою роль. Лишь более хорошая выучка англичан дала им решающее преимущество.
Только к 18.00 обе колонны англичан встретились в центре города, но сражение еще не закончилось. Маньчжуры спустились со стен и перешли в квартал, где жили их семьи, решив сражаться до конца. Перед тем как идти в последний бой, защитники перерезали своих жен и детей и выстроились в боевой порядок.