Затем на зиму Ираклий ушел на север, в Албанию, где войско жило за счет грабежа местности. Получив подкрепления от лазов и абазгов, Ираклий в маневренной войне в течение 624 г. несколько раз разбивал персидские войска, но был вытеснен осенью 624 г. — весной 625 г. превосходящими силами на запад через Амиду и Самосату в Киликию. Там он с трудом отбился от наседавших персов, лично участвуя в конном бою и получив множество легких ран. После этого осенью 625 г. Ираклий с войском удалился в Севастию за реку Галис. Результат трехлетнего похода оказался весьма скромным: сил для отвоевания восточных областей не хватало.
Долгое отсутствие Ираклия в столице привело к новой волне аваро-славянской экспансии на земли империи: судя по всему, славяне разграбили прибрежные районы Эгеиды и в 623 г. ограбили даже далекий Крит. В том же году персы захватили остров Родос. Появились слухи о готовящейся осаде столицы. Ираклий прислал весной 626 г. подкрепление в виде отряда армянских воинов и мастеров и приказал усилить оборону города, отстроив новую стену в квартале Влахерны. 29 июня авары, поддерживаемые персидским войском, занявшим азиатский берег Босфора, начали осаду Константинополя. Столица была готова к обороне: в ней было 12 000 отборных всадников, отряды пехоты и городского ополчения, флот и метательные машины. На десятый день осады была отбита флотом попытка захватить столицу с моря, и в лагере осаждавших начались разногласия, приведшие через несколько лет к распаду аварского каганата. Осажденные совершили успешную вылазку из города. Каган аваров отдал приказ к отступлению. Вскоре отошли и персы. К столице с востока подходило подкрепление под командованием Феодора, брата императора.
Летом следующего, 626 г. Ираклий переправил свое войско морем в Лазику и оттуда вторгся в Иберию, где к нему на помощь подошел отряд союзных тюрок. Не сумев взять Тифлис, Ираклий осенью 626 г. вместе с 40 000 союзных тюркских всадников двинулся через Армению на юг. Вскоре тюрки покинули его, но и с оставшимся войском[137]
Ираклий продолжил поход, преодолевая сопротивление местного населения и испепеляя все на своем пути. Достигнув древней Ассирии в октябре, он неожиданно атаковал у развалин древней Ниневии персидское войско и разгромил его в правильном сражении, перебив 6000 воинов противника, всех их командиров, взяв 26 знамен и потеряв только 50 человек. За время битвы Ираклий собственноручно сразил троих противников. Затем Ираклий двинулся дальше по следам убегавшего шахиншаха, грабя и разоряя территорию. Население целых городов при приближении войска Ираклия, не надеясь на его милосердие, бежало в горы. Все, что невозможно было взять с собой, безжалостно уничтожалось. Такая террористическая тактика имела своей целью заставить персидский двор пойти на уступки, однако отвращала местное, в т. ч. христианское, население от союза с христианской империей. Дойдя почти до самого Ктесифона, Ираклий, отягощенный огромной добычей, в январе 627 г. повернул назад из-за слишком сильного сопротивления врага и провел остаток зимы в Ганзаке, а весной двинулся в Феодосиополь. В это время в Персии произошел переворот, и на престоле воцарился новый шахиншах Широе. Новый правитель обещал Ираклию вернуть все завоеванные Хосровом территории, вернуть пленных и заключить мир. Скорая смерть Широе привела к возмущению против его наследника полководца Шахрбараза, который со своим войском из 6000 воинов при поддержке четырех отрядов из войска Ираклия дошел до Ктесифона и в 630 г. воцарился на троне Сасанидов, но правление его продолжалось лишь сорок дней.