Some 288 soldiers, 144 from each side, were handed over. The swap included 95 defenders of Mariupol’s Azovstal steelworks who were besieged by Russian forces for weeks.
The exchange was organised after a direct order from Vladimir Putin. Ukraine’s military said most of their troops had serious injuries.
Meanwhile, the European Court of Human Rights is trying to block the execution of two British men – Aiden Aslin, 28, and Shaun Pinner, 48 – captured while fighting in the Ukrainian army. It has told Moscow the death penalty must not be carried out.
A Foreign Office spokesman said: “We are doing everything we can to support the men.”