Rooney, back after a two-match suspension, headed wide from an Ashley Young cross when unmarked after 28 minutes. Ukraine had more of the possession but England goalkeeper Joe Hart was only tested once, by a low effort from Andriy Yarmolenko.
The Manchester United striker made up for the miss when just after the break he put England in front with a simple header from a badly cleared Steven Gerrard effort.
England’s victory means that they top group D and face Italy in the quarter-finals. France, who suffered a surprise 2-0 defeat at the hands of Sweden, qualify in second place and face world and European champions Spain in the last eight.
There was controversy when Ukraine striker Marko Devic appeared to be denied an equaliser with a shot that looked to have crossed the line before John Terry cleared.
Gerrard was booked for a foul and then the England captain was on the receiving end of a challenge from Yaroslav Rakitskiy which saw him yellow carded.
Hart was almost deceived by a swerving shot from Yevhen Konoplyanka but managed to turn it to one side.
Cole was booked for time wasting as the game entered its final 10 minutes. Ukraine substitute Serhiy Nazarenko fired over the bar as time started to run out for his side.
Andy Carroll came on for Danny Welbeck with eight minutes remaining. Shevchenko was booked for chopping down Young before Alex Oxlade-Chamberlain came on for goal hero Rooney.