Matthias Ginter put them ahead in the 20th minutes after good work from Antonio Ruediger, and Leon Goretzka pounced on a mistake by Ukraine keeper Georgiy Bushchan to head in their second goal four minutes after the restart.
Despite having the rested Bayern Munich and RB Leipzig players back in the line-up, the Germans, who did not win a game in the 2018/19 edition, were far from their best.
In a sloppy first half they repeatedly lost possession, allowing Ukraine to quickly counter attack before Ginter’s goal settled their nerves.
Having conceded equalisers in each of their three previous matches, Germany were eager to add to their lead on Saturday and carved out several good chances.
But Bushchan had a good day making a string of saves before he let the ball slip out of his hands, allowing Goretzka to score in the 49th.