One year ago, on February 21, 2022, Russian President Vladimir Putin publicly recognised Donetsk and Luhansk as independent states.
The breakaway eastern Ukrainian regions had been at the heart of a conflict between Ukraine’s forces and Russia-backed separatists since 2014, when Moscow annexed Crimea.
Putin's recognition of the so-called Donetsk People's Republic (DPR) and Luhansk People's Republic (LPR) was a watershed moment in the months-long escalation preceding Russia’s invasion of Ukraine.
Russian forces invade Ukraine
Shortly before 6am Moscow time (03:00 GMT), in a televised address, President Putin announced that his country was launching a "special military operation" in eastern Ukraine to protect the people of DPR and LPR.
"I decided to conduct a special military operation. Its goal is the protection of people who, during eight years, suffer abuse and genocide from Kyiv regime. To this end, we will seek to demilitarise and denazify Ukraine, as well as bring to trial those who perpetrated numerous bloody crimes against civilians, including against citizens of the Russian Federation, " he said.
Europe would then wake up to what would be the largest, most protracted military offensive in the continent since World War II.
Russian ground forces invaded from four main fronts in the north, northeast, east and south, while artillery and missiles targeted numerous locations.
From the north - Russian forces moved towards Kyiv from Belarus.
From the northeast - Russian forces moved west towards Kyiv from Russia.
From the east - Russian forces pushed towards Kharkiv from the Donbas region.
From the south - Russian forces moved from Crimea towards Odesa in the west, Zaporizhzhia in the north and Mariupol in the east.
In the past year, Russia has captured key cities and strategic ports, and Ukraine has launched multiple counteroffensives to regain lost territory.
In the following infographic series, Al Jazeera maps these major battles across the country.
During the first few days of the war, Russian columns moved towards the capital, Kyiv, from Belarus in the north.
Russian forces targeted primary locations including Boryspil International Airport, and captured Hostomel, the capital’s main airport.
By the end of February, Kyiv was encircled and citizens were encouraged to fight using makeshift weapons such as Molotov cocktails.
Despite protracted bombardments, Russian forces were unable to gain control of Ukraine’s capital, as they faced logistical challenges with ground forces unable to move fuel, munitions and material because of clogged roads. Satellite imagery showed a 40km (26-mile) Russian convoy stalled outside the capital.
The main effort of Russian operations in Kyiv was aimed at encircling the city from the northwest, west and east, according to the Institute for the Study of War. However, by mid-March, Ukraine’s forces had launched a counterattack against Russian forces.
A series of successful localised counterattacks led to Ukraine’s forces reclaiming towns around Kyiv. By April 3, Ukraine had won the battle for Kyiv as Moscow’s forces attempted an ordered withdrawal from the capital.
What was left in the wake of a month-long battle would shock the world.
Bucha, on the outskirts of Kyiv, became a strategic base for Russia’s attempt to advance towards the capital.
However, when Russia pulled its troops out of the Kyiv region at the end of March, stating that the focus would now be on capturing the eastern Donbas region, evidence of alleged war crimes began to emerge.
Karim Khan, the International Criminal Court’s chief prosecutor, described Bucha as “a crime scene” after evidence of mass killings of civilians matched up with the accounts of residents of the suburb.
Moscow rejected the findings and said the Bucha killings were staged.
The Russian Defence Ministry called them “another production of the Kyiv regime for the Western media”.
The siege of Mariupol, a southern port city known for its steelworks and machinery manufacturing with a prewar population of 450,000, began on February 24.
It lasted for almost three months, and Mariupol was encircled by Russian forces in early March.
The city endured some of the most intense fighting seen during the war, with a catalogue of attacks from the bombing of a maternity hospital on March 9 to an air raid on the Donetsk Regional Academic Drama Theatre on March 16.
Four were killed in the maternity hospital bombing.
When asked by the Reuters news agency for a comment, a spokesman for the Kremlin said: “Russian forces do not fire on civilian targets.”
Ukrainian officials said more than 300 people died in the theatre attack. However, evidence later emerged suggesting the death toll was much higher.
There were multiple failed attempts to create humanitarian corridors amid incessant shelling, which also saw water and power supplies cut.
The Kremlin has viewed the port city of Mariupol as a bridge to the Crimean Peninsula, which Russia annexed in 2014. Aside from establishing a land corridor, Mariupol was also part of Putin's plans to - in the World Bank's view - strangle Ukraine’s economy.
The city’s port is a key export hub for Ukrainian corn, coal and steel. For months, grain exports were halted, until Turkey and the United Nations brokered a deal on July 22 allowing shipments to flow again from Black Sea ports.
The Azovstal steelworks, one of the largest metallurgical plants in Europe, had been at the centre of fighting in April and May. The complex was used as a shelter by Ukrainian forces and civilians. According to Ukrainian authorities, there were 1,000 civilians hiding at the plant on April 18.
On April 21, Putin ordered Russian forces to seal off Ukrainian fighters inside the city.
Ukrainian troops stayed inside the plant for more than 80 days, resisting Russian forces. However, in mid-May, approximately 1,700 Ukrainian soldiers surrendered and at least 1,000 were transferred to Russia, leading to the fall of Mariupol.
Kharkiv, Ukraine’s second-largest city, has seen profound destruction since the start of the war, when Moscow's forces entered from Belgorod, a Russian city just 80km (50 miles) across the border.
Human Rights Watch said it had documented Russian use of cluster bombs across Kharkiv neighbourhoods.
In late March, the strategic town of Izyum fell to Russian forces.
Over the next few months, fighting intensified across the province with a barrage of Russian shelling and Ukrainian counteroffensives.
Kharkiv counteroffensive
On September 6, Kyiv launched a major counteroffensive in Kharkiv and recaptured more than 3,000sq km (1,160sq miles) of territory in less than a week, according to Deputy Minister of Defence Hanna Malyar.
Kyiv benefitted from a weaker presence of Russian fighters in the east because Moscow had redeployed forces to Donetsk and the southern axis in response to a Ukrainian offensive in Kherson. In the weeks following, Kyiv regained more territory south of Kharkiv.
Ukrainian forces recaptured Izyum in eastern Ukraine on September 12 - their most significant military success since the Battle of Kyiv in March, according to the Institute for the Study of War (ISW). This dealt a severe blow to Russia, weakening Moscow's ability to carry out artillery attacks because the town was a significant hub for targeting the Donetsk region.
After the Russian retreat, mass graves and torture chambers were found by Ukrainian forces. The Ukrainian General Staff shared images on September 16 of a mass burial site that was said to hold more than 400 bodies, including the remains of women and children.
On October 2, Ukrainian forces recaptured Lyman, in Ukraine’s eastern Donbas region, after four months of Russian occupation. Moscow was using Lyman as a crucial railway junction to resupply troops.
Similar to Kharkiv, Ukrainian authorities claimed to have found a mass grave in Lyman on October 7, with Donetsk Governor Pavlo Kyrylenko saying it was unclear how many bodies were buried.
Ukrainian authorities have repeatedly accused Russian troops of committing atrocities in occupied territories, a charge Moscow denies. Al Jazeera was unable to independently verify the claims.
Russian forces invaded Kherson from Crimea in the south of Ukraine. By the evening of February 24, they had reached the city of Kherson and secured the Antonivsky Bridge linking Kherson towards Mykolaiv across the Dnieper River.
Kherson city, the capital of the eponymous province, is located on the west bank, or right side, of the Dnieper River, while much of the Kherson province is on the east of the river.
Russian forces gained control of the area in early March, with Kherson city being the only place where they had established a presence on the river’s west bank. On March 2, Russia’s defence ministry said the city of Kherson was under full Russian control. By March 15, Moscow declared that the entire region had been taken.
Kherson counteroffensive
On July 10, Ukraine urged civilians in the Kherson region to evacuate ahead of a planned counteroffensive.
In late July, Ukrainian shelling damaged the Antonivsky Bridge - one of only two crossing points for Russian forces into territory occupied by them on the western bank of the Dnieper.
Simultaneously with an eastern counteroffensive around Kharkiv, on the southern axis, Ukraine’s forces also escalated their counteroffensive.
By the end of September, Ukrainian forces had retaken more than 500sq km (193sq miles) of territory and dozens of settlements in the Kherson region, according to Ukrainian President Volodymyr Zelenskyy.
Ukrainian forces were able to burst through Russia’s front lines, targeting Russian ground lines of communication, ammunition depots and military and transport assets. They also made several gains at key locations on the western bank of the Dnieper River, damaging two bridges and interfering with Russia’s efforts to sustain supplies via barge and ferry, according to the Institute for the Study of War.
Russian Defence Minister Sergei Shoigu on November 9 announced that his country would pull out its troops from the southern Ukrainian city of Kherson.
The decision, Russian officials said, was taken to save the lives of Russian soldiers in the face of a Ukrainian counteroffensive and difficulty keeping supply lines to the strategic city open.
Severodonetsk and Lysychansk span the strategically important Siverskyi Donets River and were the only notable areas of the Luhansk region to still be under the control of Kyiv in May 2022.
At the end of May, Russian forces fought their way into the centre of Severodonetsk from the north and south, despite fierce resistance from ground troops, and attempted to seize the strategic city in eastern Ukraine.
Ukraine’s military said that Russian forces were reinforcing their positions on the city’s outskirts and bringing additional equipment and ammunition into the area to press their offensive.
Severodonetsk, 143km (89 miles) south of the Russian border and with a prewar population of about 100,000 people, is one of several important urban hubs that lay on Russia’s path to capturing the entire Luhansk region, a key objective of Moscow’s military.
By mid-June, Moscow’s forces had gained control of most of the city and on June 24, Ukrainian forces were ordered to retreat from the city.
Governor of Luhansk Serhiy Haidai told Al Jazeera that Ukrainian troops decided to withdraw from Severodonetsk because “all the defensive structures had been shelled so much and destroyed”.
“We would have simply lost many soldiers,” he said. “We withdrew well and in an organised fashion and without losing even one fighter.”
The battle moved from Severodonetsk to its twin city of Lysychansk, across the Siverskyi Donets River. On June 25, Russian forces and Russian-backed separatists began entering Lysychansk from the south. Intense air strikes and artillery from Russian forces were aimed at cutting off Lysychansk. Civilians were ordered to evacuate the city and with Ukrainian troops outgunned, Lyschansk fell to Moscow’s forces on July 3.
Ukraine’s general staff said the Russians had multiple advantages in artillery, aircraft, manpower and other forces.
After Russian forces captured the cities of Severodonetsk and Lysychansk in the Luhansk region in June and July, Moscow began a ruthless offensive for Bakhmut city in the neighbouring Donetsk region.
It used familiar tactics, advancing with destructive ground attacks on settlements south of the city.
In late July, Moscow made territorial gains around Bakhmut and Avdiivka. By August, Russian forces and mercenaries with the Wagner Group were pressing towards Bakhmut with increased air attacks and shelling. Wagner Group mercenaries also broke through Ukrainian defences on the eastern outskirts of Bakhmut.
By October, Russian troops were able to penetrate Bakhmut’s northeastern and southern suburbs, but they were ultimately forced out by Ukrainian counterattacks.
Bakhmut’s prewar population was about 70,000. Today, an estimated 2,000 civilians remain in the city; many are surviving in squalid conditions as the conflict rages.
As Bakhmut endured incessant barrages of Russian artillery, the battle had turned into trench warfare by November, and hundreds of people were reported dead and injured every day on both sides.
Kyiv said Russia was suffering heavy losses and that many of those killed belonged to the Wagner Group. Yevgeny Prigozhin, Wagner's chief, offered to pardon convicts if they joined the group and fought for six months. Since Prigozhin’s offer, some have joined the battle and been released.
As neither side made significant gains, civilians were forced to take shelter in basements prone to flooding.
By the end of November, Russian forces had advanced on Bakhmut’s southern front, capturing settlements such as Ozarianivka, a village 15km (9 miles) southwest of the city.
Even so, according to the Institute for the Study of War at the time, Russian advances were unlikely to generate “operational-level effects”.
Capture of Soledar
On January 13, Moscow said its forces had seized control of the nearby Ukrainian salt-mining town of Soledar after weeks of intense battles.
The Russian Ministry of Defence said the capture was possible because of Moscow’s “constant bombardment of the enemy” using missiles, artillery and aircraft.
The Russian ministry said control of Soledar would allow its forces to cut off Ukraine’s supply lines in Bakhmut and then “block and encircle the Ukrainian units there”.
Taking Bakhmut would also open up a route for Russian forces to press on towards Kramatorsk and Sloviansk, Ukrainian strongholds in the Donbas region, which Moscow hoped to take control of in its entirety.
Speaking to Al Jazeera in Bakhmut, a Ukrainian soldier who identified himself as Sergey said Russian ground forces had launched massive attacks against Kyiv’s positions in recent months.
“They send their troops in like waves,” Sergey said. “We cannot stop them every time because we have fewer guys, and unfortunately, we have lost a lot of men.”
Described as one of the bloodiest campaigns of the war, the battle for Bakhmut continues.
As the conflict nears its one-year anniversary, there are fears of fresh Russian attacks to take control of Bakhmut - one of the longest battles of the war - which has come to symbolise Ukraine’s resistance with slogans such as "Hold Bakhmut".