Sweden, plagued by injuries to key players, presented a strong line-up that included star striker Zlatan Ibrahimovic, whose lingering knee woes have raised concerns about his participation in the Euro, and veteran Henrik Larsson.
But the pair were unable to make things happen, and the Swedes had nothing to show for their efforts after dominating the first half.
The hosts – and in particular their shaky defence – faded in the second half and failed to deliver despite creating several chances.
A long-range shot by Sergei Nazarenko in the 82nd minute sealed victory for Ukraine when Sweden’s second-string goalie Rami Shaaban, who replaced Andreas Isaksson at half-time, was caught going the wrong way.
Ibrahimovic, who has not scored for Sweden since October 2005, delivered one bright note for coach Lars Lagerbaeck, enduring 55 minutes of play with no pain in his knee.
“I felt no pain, we’ll see how it feels tomorrow but I’m not worried,” he told Swedish TV3 after the match.
West Ham midfielder Fredrik Ljungberg, himself nursing a broken rib, said warm-up matches ahead of big championships “are always tough.”
“Ukraine is a good technical team. But if we had made good on our chances the game would have been ours,” he said.
“At times we showed that we really can play but we have to be at our best in 10 days,” he added.
One negative note was a foot injury suffered by striker Johan Elmander, who limped off the pitch after just 21 minutes.