Three months of fighting to gain the Flanders village of Passchendaele in horrific muddy conditions claimed around half a million allied and German casualties.
In a solemn ceremony at the huge Tyne Cot cemetery in Belgium, where 11,961 victims of the battle were laid to rest, British and Belgian royals stood side by side to honour those who fell.
Three months of fighting to gain the Flanders village of Passchendaele in horrific muddy conditions claimed around half a million allied and German casualties, for the gain of only a few miles of territory.
"We rememember it not only for the rain that fell, the mud that weighed down the living and swallowed the dead, but also for the courage and bravery of the men who fought here," a solemn Charles told the ceremony.
"Drawn from many nations, we come together in their resting place... to promise that we will never forget," the heir to the British throne said, wearing a beige summer suit with a red poppy on his lapel.
Descendants of the combatants also read out solemn tributes to those who died, standing amid the white headstones etched with names from Britain and Commonwealth countries like South Africa, Australia, New Zealand and Canada.
"My great, great uncle and namesake Sergeant William Rhodes, Cheshire Regiment, awarded the distinguished conduct medal, killed in action 31 July 1917, one hundred years ago today," his descendant said.
Charles's son Prince William gave a short reading, while William's wife Kate and Belgium's Queen Mathilde laid flowers on German graves in a symbol of reconciliation.
Between hymns from a Welsh choir and brass bands of red uniformed royal guards wearing tall bearskin hats, British Prime Minister Theresa May -- breaking off her three-week summer holiday -- read a passage from the Bible honouring the dead.
The hour-long ceremony concluded when four Belgian Air Force F-16 jets roared over the cemetary.
The blue skies and fluffy white clouds drifting over green Flanders fields for Monday's ceremony stood in stark contrast to the reality of Passchendaele 100 years ago, when heavy rains turned the battlefield into a quagmire.
Sometimes known as the third battle of Ypres, Passchendaele has become synonymous with the bloody trench war stalemate that World War I became.
The battle officially began at 3:50 a.m. on July 31, 1917 with the aim of driving the Germans from the Belgian ports on the English Channel, where German U-boats lurked.
But in the end, the Commonwealth troops advanced only five miles (eight kilometres), albeit weakening German defences.
The commemorations began Sunday evening when Prince William and King Philippe of Belgium laid wreathes at the Menin Gate, the monument which honours the dead of the armies of the British empire.