Match ends, Ukraine 0, Poland 1.
Poland reached the knockout stages of a European Championship for the first time as they finished second in Group C after a win over Ukraine.
Arkadiusz Milik had a shot saved and Robert Lewandowski sent an effort over as Poland missed two early chances.
Ukraine, who were already out, went close when Andriy Yarmolenko shot wide.
Jakub Blaszczykowski curled in a left-foot shot for the winner after 54 minutes and Poland will now play Switzerland in the last 16 on Saturday.
However, Bartosz Kapustka will miss the match in Saint-Etienne after picking up his second yellow card of the tournament.
Lewandowski concern for Poland
A win by a bigger margin could have seen Poland leapfrog Germany, who beat Northern Ireland, to top the group but they rarely looked like adding to their lead.
And while they will celebrate their progress, they will also have concerns over the form of striker Lewandowski.
He scored 42 goals for Bayern Munich in 2015-16 and was the top scorer in Euro 2016 qualifying with 13 goals.
The 27-year-old was rightly regarded as Poland's key man for the tournament, but has not had a shot on target in his three games so far - and is without a goal or assist in 523 minutes of European Championship finals action since a scoring against Greece at Euro 2012.
Lewandowski should have ended that run early on when he was found by a right-wing cross only to sidefoot wide from eight yards, while he also produced some clever footwork before scuffing a shot wide.
His strike partner Milik did not fare much better, having an early shot saved when through on goal, and he also headed wide later on when he stole in at the near post.
"It will only be a matter of time before Lewandowski and Milik start to score," said Match of the Day pundit Mark Lawrenson. "I don't think you would want to play against them."
Ukraine exit on another low note
Ukraine were the first side to be eliminated from Euro 2016 and, with the pressure off as they played for pride, they performed with a bit more freedom, enjoying 66.5% of possession.
Olexandr Zinchenko, 19, is Ukraine's youngest goalscorer and the midfielder showed glimpses of why he is regarded as one of his country's stars of the future.
He produced a delightful ball to release Roman Zozulya, whose shot was blocked by Michal Pazdan, and came close to scoring when he headed over from close range.
However, by failing to score his team depart as the first team to go five matches without a goal at European Championship finals.
Man of the match - Kamil Glik
What they said:
Ukraine captain Ruslan Rotan: "The result was negative. There are a bunch of reasons for this. We could talk about the atmosphere in the team, but I can only say that it was positive - the players found common ground and had a good time together.
"The biggest thing, that we need to work on is our psychological level. Maybe we don't have the right mentality."
Poland coach Adam Nawalka: "That Lewandowski hasn't scored yet is not a problem whatsoever. He is doing a lot of hard work and has had a big influence on our wins and how we have played.
"He's incredibly important for us. He's a player who can help us. He plays in a supportive way throughout. It's just a matter of time for him, he's creating a lot of chances, and I think he'll score in the next match."
The stats you need to know
- Robert Lewandowski has yet to direct a single shot on target in his 270 minutes of action so far at the Euro 2016 finals.
- Blaszczykowsk is also the first Polish player to score at two Euro finals tournaments.
- In only one of Poland's nine EURO finals games has either team scored more than one goal (0-2 v Germany in 2008).
- At 37 years and 83 days, Anatoliy Tymoshchuk became the oldest Ukrainian player ever to appear at a Euro finals competition.
- 5KucherBooked at 38mins
- 14RotanBooked at 25mins
- 21ZinchenkoSubstituted forKovalenkoat 73'minutes
- 8ZozulyaSubstituted forTymoshchukat 90+2'minutes
- 19ZielinskiSubstituted forBlaszczykowskiat 45'minutes
- 21KapustkaBooked at 60minsSubstituted forGrosickiat 71'minutes
- 7MilikSubstituted forStarzynskiat 90+3'minutes
- Svein Oddvar Moen
- Shots on Target
Second Half ends, Ukraine 0, Poland 1.
Substitution, Poland. Filip Starzynski replaces Arkadiusz Milik.
Yevhen Konoplyanka (Ukraine) wins a free kick in the defensive half.
Foul by Thiago Cionek (Poland).
Substitution, Ukraine. Anatoliy Tymoshchuk replaces Roman Zozulya.
Offside, Ukraine. Roman Zozulya tries a through ball, but Yevhen Konoplyanka is caught offside.
Foul by Taras Stepanenko (Ukraine).
Arkadiusz Milik (Poland) wins a free kick on the left wing.
Hand ball by Andriy Yarmolenko (Ukraine).
Foul by Roman Zozulya (Ukraine).
Robert Lewandowski (Poland) wins a free kick on the left wing.
Taras Stepanenko (Ukraine) wins a free kick in the defensive half.
Foul by Arkadiusz Milik (Poland).
Hand ball by Yevhen Konoplyanka (Ukraine).
Attempt saved. Andriy Yarmolenko (Ukraine) left footed shot from outside the box is saved in the top centre of the goal. Assisted by Viktor Kovalenko.
Foul by Artem Fedetskiy (Ukraine).
Lukasz Fabianski (Poland) wins a free kick in the defensive half.
Attempt saved. Ruslan Rotan (Ukraine) left footed shot from outside the box is saved in the bottom right corner.
Attempt blocked. Yevhen Konoplyanka (Ukraine) right footed shot from the left side of the box is blocked. Assisted by Viktor Kovalenko.