England record goes up in smoke
England had won their first eight games to secure top spot in the group but their chances of extending that run virtually disappeared after 14 minutes when goalkeeper Robert Green was sent off for bringing down Artem Milevskiy.
Andriy Shevchenko missed the resulting penalty but Ukraine, who created several chances throughout the game, got the decisive goal after 29 minutes when Sergiy Nazarenko's shot flew in via an Ashley Cole deflection.
The victory took Ukraine to 18 points, one ahead of Croatia. Ukraine complete their fixtures with a trip to pointless Andorra on Wednesday while Croatia visit Kazakhstan.
Despite dominating the game, Ukraine coach Olexiy Mykhaylychenko was sober about what was required of the team to qualify.
"We have coped only with the first part of our task. It is not as easy to crack Andorra as you may think," he told reporters.
Ukraine started the game in lively fashion, but were interrupted within minutes when a handful of flares were thrown on to the pitch by England's goal, causing a break in the game.
An England official said the incident had been unacceptable and the team would take the case up with FIFA.
The pause in play did not deter Ukraine, however, who forced England into some desperate defending.
The pressure proved too much for centre back Rio Ferdinand who blundered to allow Milevskiy through on goal.
As he touched the ball past the onrushing Green, the keeper brought him crashing down and was sent off.
"I do not like talking about referees but I don't understand why our goalkeeper was sent off while one player was running and another player was diving. I told the fifth official it was a mistake," England coach Fabio Capello said.
England brought on David James, sacrificing winger Aaron Lennon, and the new keeper was sent the wrong way by Shevchenko's penalty - which unfortunately for the striker hit a post and missed.
The hosts continued to press, however, and deserved their lead, albeit helped by a deflection off the head of defender Ashley Cole who stooped and attempted to divert it to safety.
Milevskiy clattered a shot against a post soon after while James made several good stops, including a superb diving effort to turn away Yaroslav Rakytsky's long shot.
England gathered control and pace in the second half, with Wayne Rooney a constant menace.
Frank Lampard scuffed a chance to level the score moments before sending the ball inches past the far post having collected an incisive pass from Rooney.
Lampard again wasted a promising free kick 20 minutes from time.
Ukraine substitute Andriy Yarmolenko latched on to a slicing pass from Milevskiy on the left flank but failed to beat the keeper, striking straight at James.
Rooney had a chance of a late equaliser, unleashing a powerful low shot from the edge of the area as all the goalkeeper could do was watch the ball pass the post.