This weekend marks two years since Russia invaded Ukraine, a conflict that has claimed tens of thousands of lives, upended long-held international norms and has no clear end in sight.
In more than one sense, Russia’s President Vladmir Putin has failed: Ukraine remains a sovereign nation, with Moscow in control of about one-fifth of its territory, far from his goal of toppling its government. Putin wanted to stop NATO expanding: He now faces an alliance that has added hundreds of kilometers to its border with Russia following Finland’s accession.
But as the war enters a third year, there are increasingly signs that it is turning in Russia’s favor, both on the battlefield and in terms of once-solid Western support waning.
We’ve been taking a look at some of the most significant moments of the war so far.
February 24, 2022: The ‘special military operation’ begins
Two years ago, Putin made an early morning address announcing a “special military operation” against Ukraine, his still frequently used euphemism for the full-scale invasion of the country.
Putin said he wanted the “denazification” of Ukraine, one of his justifications for the invasion that analysts say distorts history.
Moments later, the first explosions were heard across Ukraine.
While there had been Western intelligence warnings of a looming Russian invasion for months prior, the announcement took many by surprise.
Putin’s announcement signaled the start of Russia’s war in Ukraine, which has so far cost the lives of over 10,300 civilians, according to the United Nations. Military losses are harder to determine, but Russia is thought to have suffered more than 300,000 fatalities and injuries.
February 26, 2022: ‘I don’t need a ride’: Ukraine signals it will be no pushover
Ukrainian President Volodymyr Zelensky was in Kyiv when Russia invaded, with Putin’s forces expected to quickly advance on the capital. Two days later, he turned down an offer of evacuation from the United States.
In defiant words, he told the US, “I need ammunition, not a ride.”
His attitude signaled his country’s fighting spirit in the face of Russian aggression and its determination not to crumble as some expected it to.
The Ukrainian defenders of Snake Island – a tiny island in the Black Sea – echoed this defiance in the early stages of the war when, outnumbered and ordered to surrender, they responded to a warning from an approaching Russian military vessel by saying, “Russian warship, go f**k yourself.”
Since then, the phrase has been adopted as a slogan during the war and used by demonstrators at Ukrainian solidarity protests in the West.
March 16, 2022: Mariupol theater bombing
Throughout the conflict Russia has carried out a relentless bombing campaign, and one of the worst examples came when Mariupol’s Drama Theater was hit by Russian forces.
An estimated 1,300 civilians were sheltering inside the theater when it was attacked.
Painted on the ground outside the building — in giant Cyrillic letters visible from the air — was the word “CHILDREN.”
About 300 people are thought to have been killed, according to Ukrainian authorities. CNN has been unable to independently verify the death toll.
Since then, there have been numerous high-profile Russian attacks on civilian targets. More than 40 people were killed in an attack on an apartment block in Dnipro in January 2023. At least 51 people were killed when Moscow’s forces targeted a café and a shop in Hroza, in the Kharkiv region, in October 2023.
April 1, 2022: Bucha atrocities
The following month, a small town to the west of Kyiv became a byword for war crimes.
International experts said they found “grave breaches” of international humanitarian law by Russian forces when they withdrew from the city of Bucha.
Residents there shared stories of looted homes, murders and failed escapes.
The town’s morgue ran out of space. Some locals described turning their vegetable patches and front yards into makeshift graves, since the presence of Russian forces made it impossible for them to transport their dead.
Evidence of execution was clear when bodies were found with their arms bound behind their backs with multiple bullet wounds.
April 14, 2022: Sinking of the Moskva
The Russian warship Moskva, the flagship of the Russian Navy’s Black Sea Fleet, sank on April 14.
The reason for this was disputed. Ukraine claimed that it hit the vessel with anti-ship cruise missiles, while Russia insisted that a fire caused it to sink.
Regardless, the sinking was a major embarrassment for Russia - its biggest wartime loss of a naval ship in 40 years.
It was an early sign of how the Black Sea would become an important front.
In October that year, Ukraine attacked the only bridge connecting annexed Crimea to mainland Russia and has been harrying Russia’s Black Sea fleet, claiming to have destroyed a third of its vessels.
November 9, 2022: Kherson liberation caps a successful autumn
There were scenes of euphoria when the city of Kherson was liberated after eight months of Russian occupation.
The retreat represented a major blow for Putin’s war effort – Kherson was the only Ukrainian regional capital that Russian forces had captured since February’s invasion.
The withdrawal of Russian troops east across the Dnipro River capped off a successful autumn for Ukraine, with it reclaiming swathes of land that Russia had occupied since the early days of the war.
Despite battlefield successes, the colder months brought a new danger when Moscow’s air force began pummelling the country’s energy network, an attempt to drain morale.
Millions of civilians were left without electricity, heat, water and other critical services during winter.
May 3, 2023: Drones hit the Kremlin, as the war comes to Russia
In the spring of 2023, an emboldened Kyiv increasingly brought the war home to Russia with a series of drone attacks on Russian soil.
Strikes peppered cities including the Moscow. On May 3, two explosive drones targeted the Kremlin, in the heart of the capital. They were intercepted and destroyed before they caused any damage or injury, the Kremlin said. Ukrainian officials denied involvement.
Later that month, Russian blamed Ukraine for another drone attack on Moscow, which left two injured and several buildings damaged.
Putin called the attack “a clear sign of terrorist activity” while a spokesman for Ukraine’s air force said it was aimed at Russians who felt the war was distant.
There have been subsequent attacks, such as on oil facilities and other infrastructure. This year Russia evacuated some residents from the border region of Belgorod following a surge in deadly Ukrainian strikes.
May 20, 2023: Russia takes control of Bakhmut
In a rare gain, Russia captured the besieged eastern city of Bakhmut following a months-long slog for every inch of territory.
The struggle for the city – whose symbolism outweighed its strategic importance - encapsulated the slow-moving nature of the ground war, which had grown to resemble the kind of fighting seen in World War One.
Moscow threw huge amounts of manpower, weaponry and attention towards the city yet struggled to break down a stubborn Ukrainian resistance that outlasted most expectations.
Russia’s victory came at huge cost. A NATO source told CNN they estimated that for every Ukrainian soldier killed defending Bakhmut, Russia lost five.
June 2023: Ukraine counteroffensive
After months of build-up, Ukraine began a counteroffensive aimed at recapturing Russian-seized territory.
With fighting focused on the southern and eastern fronts, its launch brought with it a renewed sense of optimism. However, Russia had had time to prepare layers of defenses.
As the months passed, it became clear that the counteroffensive would not provide the decisive breakthrough many had hoped for. For example, fighting around Robotyne, to the north of Mariupol, was marked by a crawl over vast minefields, with troops battling for gains counted in streets, or even buildings.
The counteroffensive had stalled by the time the winter returned, with Western intelligence assessments warning the battlefield could stagnate, turning the war into a “frozen conflict.”
June 23, 2023: Wagner mutiny
Yevgeny Prigozhin was the founder of Russia’s Wagner private military group, which played a crucial role in Bakhmut. He was once close enough to Putin to be called his “personal chef.”
But that all changed on June 23, when Prigozhin led an armed insurrection against Putin after railing against the country’s military brass over their handling of the Ukraine war.
His group started marching towards Moscow, shooting down military aircraft and killing Russian servicemen. But it was abruptly halted when a deal was brokered by Belarusian leader Alexander Lukashenko.
Criminal charges against the Wagner boss were dropped, yet Putin said in a speech at the time that those on the “path of treason” would face punishment.
Months later, Prigozhin was killed when a plane he was on board crashed northwest of Moscow.
January 2024: US aid stalls
A constant drip feed of aid from Western countries, particularly the US, as well as the provision of modern weaponry, has proved a vital lifeline for Ukraine in its war.
But in early 2024, a US aid package for Ukraine stalled. The US Senate passed with bipartisan backing a $95.3 billion foreign aid bill, which includes $60 billion to support Ukraine.
However, Republican House Speaker Mike Johnson has resisted moves for a quick vote, which would likely face a revolt from members of his own party.
The episode of a reminder of how Ukraine’s fate is not entirely in its own hands. Ukraine commanders have warned of critical ammunition shortages impeding their fight.
February 8, 2024: Ukraine military chief fired
This month, Zelensky announced the dismissal of Ukraine’s top commander, General Valerii Zaluzhnyi, in the biggest military shakeup since the start of Russia’s full-scale invasion almost two years ago.
The two are known to have fallen out and his firing marked a political gamble for Zelensky. Despite the failure of Ukraine’s counteroffensive, the now-former military chief remains one of the most popular leaders in the country.
The move also came as Ukraine was put back on a defensive footing by a flurry of Russian offensives along much of the frontlines.
On February 17, Russia said it had won full control of the eastern city of Avdiivka, marking the biggest gain for Moscow since Bakhmut.
As the war enters its third year, the future of the conflict is all the more uncertain.
CNN’s Jennifer Hauser, Victoria Butenko, Daria Tarasova-Markina and Andrew Carey contributed to this report.