Шанхай, 1930-е годы. Город контрастов, где неоновые вывески игорных домов отражаются в лужах после дождя, а в переулках пахнет жасмином и порохом. Молодой японец по имени Косукэ приезжает сюда, чтобы разобраться с долгами своего покойного отца. Он не герой, не боец — просто студент, который хотел изучать литературу, но вместо этого оказался втянут в водоворот криминальных разборок между местными триадами и японской военной разведкой. Всё, что у него есть, — это старый фотоаппарат отца и смутные воспоминания о женщине, чьё лицо он видел на единственной уцелевшей фотографии. Случайная встреча с китайской актрисой, играющей в дешёвом театре, переворачивает его жизнь: она оказывается той самой девушкой с фото, но её прошлое скрыто за слоем грима и лжи. Косукэ предстоит узнать, что его отец был не просто должником, а агентом, пытавшимся предотвратить войну, и что каждый шаг в этом городе может стать последним.
Пока Косукэ пытается соединить разрозненные кусочки головоломки, над Шанхаем сгущаются тучи японо-китайской войны. Актриса, чьё имя Линь, балансирует между любовью к чужеземцу и долгом перед подпольщиками, которые используют её театр как прикрытие. Их роман разворачивается на фоне пьяных вечеров в джаз-клубах, перестрелок на крышах и тайных встреч в чайных домах, где за стеной режутся в маджонг. Косукэ понимает, что его чувства — роскошь, которую он не может себе позволить: каждый его шаг отслеживается, а Линь может быть как спасением, так и ловушкой. Когда японская армия входит в город, герои оказываются по разные стороны баррикад, но их связь оказывается сильнее политики. Финал — это не хэппи-энд, а горькое прощание под звуки старого шанхайского блюза, где один остаётся, чтобы бороться за свой народ, а другой уходит в неизвестность, унося с собой плёнку с последними кадрами умирающего города.