In the summer of 645, the great army of the Tang emperor surrounded a mountain fortress in Liaodong. The fortresses of Yodong and Baegam had already fallen one after another, and a large Goguryeo army sent to relieve it had been beaten close to its walls. Yet this fortress held out for nearly three months, and in the end the emperor turned his army around.

This is the story of Ansi. How much of the saying "one fortress stopped a war" is record, and how much is later storytelling? This article follows the Goguryeo-Tang War of 644 to 668: why it began, how the campaign of 645 and the siege of Ansi unfolded, and how Goguryeo fell afterwards. It draws on an annotated edition of the Samguk Sagi and on entries in the Encyclopedia of Korean Culture from the Academy of Korean Studies.

Why the war began

The two states were not enemies from the start. After the Tang dynasty was founded, they exchanged envoys often, and in 622 they swapped the prisoners taken during the Goguryeo-Sui wars. The encyclopedia entry on the war finds its root cause in the expansion policy of a newly unified Chinese power.

Tension built up step by step. In 631 the Tang tore down a gyeonggwan in the Liaoxi region. It was a victory monument that Goguryeo had raised to mark its win in the war with the Sui. That same year Goguryeo began a long wall, the Cheolli Jangseong, running from Buyeo fortress to the southern tip of the Liaodong Peninsula, and finished it over 16 years.

The man who supervised the wall was Yeon Gaesomun. In 642 he staged a coup, removed King Yeongnyu and his opponents, put King Bojang on the throne and took real power himself. Exactly why the king and Yeon Gaesomun clashed is not known. Among scholars, the common view is that the coup was a reaction against the king's mild policy toward the Tang.

Things also went wrong to the south. Silla, which was losing ground in its fighting with Baekje, sent Kim Chunchu to Pyongyang to seek better relations, but Yeon Gaesomun refused. Facing isolation, Silla drew closer to the Tang. When Goguryeo detained Tang envoys, the tension peaked, and in 644 the Tang army began its attack.

Two-row timeline. The top row covers the whole war: 631 work on the long wall begins, 642 Yeon Gaesomun takes power, 645 the Tang campaign and the siege of Ansi, 660 Baekje falls, 661 Pyongyang besieged, 665 Yeon Gaesomun dies, 668 Pyongyang falls, 671 Ansi taken. A box below expands 645: crossing of the Liao River on April 1, Gaemo on April 26, Bisa on May 2 (landing by sea), Yodong on May 17 after 19 days, Baegam on June 10, the Tang army at Ansi on June 20 and its withdrawal on September 18, with 88 days of siege in between
The course of the Goguryeo-Tang War and the dates of the 645 campaign. Dates follow the Samguk Sagi and entries in the Encyclopedia of Korean Culture; spacing is not to scale (diagram)(Diagram)

Spring 645: crossing the Liao River

In March 645, Emperor Taizong reached Dingzhou, in what is now central Hebei, and told his officials why he was going to war. The Sui had sent armies four times without winning this land, he said, and for China's sake he would avenge its sons and younger brothers. He also used Yeon Gaesomun's killing of the king and ministers as a pretext. Taizong decided to invade despite considerable opposition at court, and he prepared grain, ships and siege equipment in advance.

On April 1, the vanguard under Li Shiji pretended to march toward Huaiyuan, then suddenly crossed the Liao River at Tongding. The Goguryeo towns were greatly alarmed, and all of them shut their gates to defend themselves. The Tang army tried to throw the defense off balance by attacking several fortresses, including Sinseong and Geonan, at the same time. When that failed, it massed its forces against Gaemo.

In less than two months after that, the big fortresses of Liaodong fell one by one. Gaemo fell on April 26, and Bisa, attacked by Zhang Liang's fleet after it landed on the Liaodong Peninsula, fell on May 2. The Samguk Sagi records that 8,000 men and women were taken when Bisa fell. Yodong, where Taizong himself joined the attack, fell on May 17 after 19 days of assault, and Baegam passed into Tang hands on June 10.

The emperor's own road was not easy either. In the Liao marshes west of the river, mud stretched for more than 200 li, and neither men nor horses could pass. The army crossed only after laying earth to build a causeway. On the way home it would have to cross these marshes again.

A flow chart, not a map. Arrows run from the Liao River crossing (April 1) to Gaemo (April 26), Yodong (May 17) and Baegam (June 10), then to Ansi, which held from June 20 to September 18. A separate arrow shows the Tang fleet landing on the Liaodong Peninsula and taking Bisa (May 2). A box beside Ansi notes that a relief army of 150,000 was defeated near the fortress. Two dashed arrows show routes not taken: Taizong's first idea of striking Geonan to the south first, and a bypass through lightly defended Ogol to Pyongyang. A box at the bottom gives Li Shiji's point that the army's grain was all at Yodong, so skipping Ansi risked having the supply line cut
The order of the fortresses on the Tang army's path in 645, drawn as boxes and arrows only. It is not a map, and the boxes are not placed by real geography (diagram)(Diagram)

Eighty-eight days at Ansi

On June 20, the Tang army reached Ansi. Goguryeo sent Go Yeonsu, the yoksal of the northern district, and Go Hyejin, the yoksal of the southern district, with 150,000 Goguryeo and Mohe troops to relieve the fortress. In the sixth and seventh centuries, a yoksal was a senior official who ran civil affairs in the capital or the provinces and also commanded troops.

Two plans competed inside the Goguryeo command. The veteran generals argued for the traditional approach of holding the main fortresses, stopping the enemy's advance and keeping it from finding food on the spot. The other side wanted a pitched battle on the open Liaodong plain, and the command chose that plan.

The relief army was caught in a Tang encirclement southeast of Ansi, about 8 li from the fortress, and was badly beaten. The encyclopedia entry on the battle says Go Yeonsu and Go Hyejin surrendered with the 36,800 men who survived. The entry on Go Yeonsu says instead that he lost about 30,000 men before surrendering, so even the meaning of the number differs. At this time Goguryeo was also under attack from Silla in the south.

Ansi now stood alone. From the time they took Baegam, the Tang leaders disagreed about what to do with it. Taizong had heard that Ansi was rugged and well manned, and that its lord had held out even against Yeon Gaesomun, who finally left the fortress in his hands. So Taizong proposed striking Geonan first, since it was weakly held and short of grain.

Li Shiji disagreed. Geonan lay to the south and Ansi to the north, he said, and all of the army's grain was at Yodong. If the army skipped Ansi and the Goguryeo forces cut the supply line, what then? Taizong followed the plan of the general he had appointed, and Li Shiji attacked Ansi.

When the attack stalled, other routes were raised. Go Yeonsu, who had surrendered, suggested leaving Ansi behind, taking lightly defended Ogol and marching straight on Pyongyang. But others argued that with the emperor himself in the field, the army could not risk advancing with Ansi at its back, and the siege went on. The entry on Go Yeonsu names Zhangsun Wuji as the official who opposed the plan.

The Tang army brought up the most powerful siege weapons of the day, the pogeo and the chunggeo. The pogeo was a stone-thrower that hurled large rocks, and the chunggeo was a ramming cart built to break walls. Ansi beat back these attacks again and again and quickly repaired the damaged walls. Li Shiji had the west side of the fortress attacked six or seven times a day.

Next the Tang army built a hill of earth. Over 60 days, with a cumulative 500,000 workers, it raised an earth mound higher than the wall at the southeast corner and used it as a platform to attack. The defenders inside answered by building the wall higher.

Then the mound suddenly collapsed, and a corner of the wall broke. Some argue that the defenders had dug a tunnel under the mound to bring it down. The Goguryeo troops came out through the broken wall and seized the mound, and the Tang army attacked fiercely for three days without retaking it. Where the wall had broken, the defenders set up a wooden palisade.

The season was not on the Tang side. With winter coming, the weather turning cold and grain running out, the Tang army lifted the 88-day siege and withdrew in haste on September 18. The entry on the war adds that, while the advance was stalled, its long supply line and rear areas were under threat. In October, while crossing a stream in the middle of the Liao marshes, storms and snow struck, and many soldiers died soaked through.

Side-view concept sketch of the siege of Ansi. Outside on the left stands a wheeled stone-thrower; in the middle an earth mound rises above the wall, with a slumped patch near its top; on the right is a cracked wall with a dashed raised section, and a wooden fence inside. Five numbers: 1 stone-throwers and rams hit the wall and breaks are repaired quickly, 2 an earth mound built higher than the wall over 60 days, 3 the wall raised from the inside, 4 the mound collapses, a corner of the wall breaks and the defenders take the mound, 5 a wooden palisade closes the breach. A note says the mound stood at the southeast corner and sizes are not to scale
A simple side-view concept sketch of the siege of Ansi as the encyclopedia entries describe it. It has no measurements, and shapes and sizes are not real (diagram)(Diagram)

Mountain fortresses and siege engines

Ansi was a sanseong, a fortress built on a mountain. Goguryeo kept a chain of defensive fortresses along the Liao River basin, such as Sinseong, Yodong, Geonan, Gaemo, Baegam and Bisa. Among them, Ansi ranked second only to Yodong in strategic weight. It sat between Sinseong and Geonan, so if the other fortresses fell at once, its defense would directly shape the defense of the whole Liaodong region.

The attackers' tools fall into three groups. There was the pogeo that hurled large rocks, the chunggeo that rammed the wall to break it, and the earth mound raised higher than the wall as a platform. The first two were meant to break the wall, while the mound was a work project for attacking from a point higher than the wall.

The defenders filled the gaps fast. When the wall broke they repaired it, when the mound rose they built the wall higher, and where it was still breached they set up a palisade. The encyclopedia entry on Ansi reads this contest as a sign that Goguryeo's mountain fortresses of the time were strong in defense.

The traditional plan of holding the fortresses was a defense that made the seasons an ally. The defenders hold the fortresses to stop the enemy's advance and keep it from finding food locally, while separate units cut its long supply lines and harass it with raids. When autumn comes, cold and hunger force the enemy to fall back, and that is the moment to strike. The relief army of 645 fought a pitched battle instead and lost, but once Ansi stopped the Tang advance, Goguryeo regrouped and pressed the Tang this way.

The record and the later stories

The records give the outcome of 645 very different weight. Chinese texts present it as a major success: the Tang took 10 fortresses and killed more than 40,000 Goguryeo soldiers, while losing only 2,000 of its own. The encyclopedia entry on the battle points to two things: Taizong hurried across the Liao only three days after leaving Ansi, and he deeply regretted the invasion afterward. From these it suggests that the Tang losses were far heavier than the records show.

Taizong himself could not look back on the campaign with ease. In February of the next year he asked the general Li Jing why he had run into such trouble while leading the armies of the whole realm.

Accounts of the Goguryeo side also differ. The entry on the battle says Goguryeo's attempt to ally with the Xueyantuo failed. The entry on the war says Goguryeo sent envoys to the Xueyantuo to have them attack the Tang's northern border.

In the Samguk Sagi, each entry for 645 carries an editor's note pointing out that the same content appears in the Chinese history Zizhi Tongjian. The compiler of the Samguk Sagi, Gim Busik, wrote a comment calling Taizong a ruler rarely seen in the world. He then said that since the eastern campaign broke down at Ansi, its lord must have been a hero of no ordinary kind. He found it a great pity that the histories did not record the man's name.

Yet the lord of Ansi is widely known as Yang Manchun. According to the encyclopedia entry on that name, no Korean source up to the Goryeo period gives the lord's name, including the Samguk Sagi and the Samguk Yusa. Chinese sources from before the Song and Yuan periods do not give it either.

The name first appears in a Ming dynasty novel by Xiong Zhonggu, the Tangshu zhizhuan tongsu yanyi, whose earliest surviving printed edition dates from 1553. The six generals of Ansi in that novel were invented characters. The name seems to have reached Joseon through contacts with the Ming around the time of the Imjin War.

There is also a well-known story that Taizong was struck in the eye by an arrow during this fight. That story comes down through texts from the late Goryeo period.

The location of the fortress was also debated for a long time. From the 17th century, Joseon envoys traveling to China began to identify Fenghuang fortress as Ansi. Today the strongest view places it at the Yingchengzi mountain fortress southeast of Haicheng in Liaoning Province, and another view places it at the Hailongtian mountain fortress in Dashiqiao.

The next 23 years: how Goguryeo fell

Judging that Goguryeo could not be taken in one blow, the Tang changed its strategy. It turned to a long war of attrition, sending small land and naval units to raid Goguryeo again and again so that farmers could not work their fields in peace. Because the gap in population and production between the two states was large, this attrition did Goguryeo considerable harm.

Emperor Gaozong chose to open a second front on Goguryeo's southern border. The result was the fall of Baekje to the allied Silla and Tang forces in 660. The next year, in 661, a Tang army under Su Dingfang crossed the sea, sailed up the Taedong River and besieged Pyongyang, attacking it for several months.

This operation differed from 645. With Silla helping with grain and other supplies, the Tang army's biggest problem was eased, and it could now fight even in winter. Goguryeo had to split its defensive strength to face the Silla army as well.

The final blow came from within. When Yeon Gaesomun died in 665, his sons fought over power. Namsaeng, who lost out, went to Gungnae fortress and sent his son to surrender to the Tang, and Yeon Gaesomun's younger brother Yeon Jeongto surrendered 12 fortresses to Silla. After Sinseong and Buyeo fell, the allied Silla and Tang forces took Pyongyang in 668, and King Bojang was taken away to the Tang.

The story of Ansi runs a little longer. After Goguryeo fell, the fortress became a center of the revival movement in the Liaodong region, and it fell to the Tang army in July 671. The fortress that had held for 88 days in 645 fell three years after the kingdom itself was gone.

What to read next