Match ends, Ukraine 1, Germany 2.
Germany claimed a first Nations League win with victory over Ukraine in a game where around 20,000 fans were allowed to attend Kyiv's Olympic Stadium.
Joachim Low's side had not won any of their six fixtures in the competition prior to Saturday's Group A4 match.
They took the lead when Matthias Ginter stabbed in before Leon Goretzka headed home after an error by goalkeeper Georgiy Bushchan.
A Ruslan Malinovskyi penalty set up a tense finale but Germany held on.
Germany, who did not win a game in their inaugural Nations League campaign two years ago, now have five points from three games in the 2020-21 edition of the competition.
Fans were let in to watch this game after local health authorities allowed the 70,000-capacity Olympic Stadium to be filled by up to 30%.
Chelsea defender Antonio Rudiger, who has not played for the Blues at all this season, impressed during the game and provided the assist for Germany's opener following a clever run outside the Ukraine defence.
Rudiger's club team-mates Kai Havertz and Timo Werner started on the bench, coming on towards the end of the game as Germany found themselves under pressure from Ukraine as the hosts pressed for an equaliser.
- 5SydorchukSubstituted forMakarenkoat 84'minutes
- 7YarmolenkoSubstituted forMarlosat 69'minutes
- 8MalinovskiyBooked at 41mins
- 20KovalenkoSubstituted forShaparenkoat 77'minutes
- 15TsygankovSubstituted forZubkovat 69'minutes
- 4GinterBooked at 84mins
- 13KlostermannSubstituted forCanat 90'minutes
- 8KroosBooked at 53mins
- 7DraxlerSubstituted forWernerat 80'minutes
- 20GnabrySubstituted forHavertzat 90+3'minutes
- Orel Grinfeld
- Shots on Target
Second Half ends, Ukraine 1, Germany 2.
Attempt saved. Marlos (Ukraine) left footed shot from outside the box is saved in the bottom right corner. Assisted by Roman Yaremchuk.
Substitution, Germany. Kai Havertz replaces Serge Gnabry.
Attempt missed. Mykola Shaparenko (Ukraine) right footed shot from outside the box misses to the left. Assisted by Ruslan Malinovskiy.
Substitution, Germany. Emre Can replaces Lukas Klostermann.
Toni Kroos (Germany) wins a free kick in the defensive half.
Foul by Marlos (Ukraine).
Offside, Ukraine. Marlos tries a through ball, but Roman Yaremchuk is caught offside.
Attempt saved. Timo Werner (Germany) right footed shot from the centre of the box is saved in the bottom left corner.
Hand ball by Roman Yaremchuk (Ukraine).
Attempt missed. Ruslan Malinovskiy (Ukraine) left footed shot from outside the box is close, but misses to the right. Assisted by Marlos.
Attempt missed. Ruslan Malinovskiy (Ukraine) left footed shot from long range on the left is too high from a direct free kick.
Substitution, Ukraine. Yevhenii Makarenko replaces Serhiy Sydorchuk.
Matthias Ginter (Germany) is shown the yellow card for a bad foul.
Foul by Matthias Ginter (Germany).
Oleksandr Zubkov (Ukraine) wins a free kick on the left wing.
Foul by Leon Goretzka (Germany).
Ruslan Malinovskiy (Ukraine) wins a free kick in the defensive half.
Attempt blocked. Serge Gnabry (Germany) right footed shot from the left side of the box is blocked.