England keeper Robert Green was sent off as Ukraine wrecked the visitors' 100% record in World Cup qualifiers.
Green saw red after only 13 minutes for fouling Artem Milevskiy as the striker cashed in on Rio Ferdinand's mistake.
Andriy Shevchenko sent substitute David James the wrong way from the spot but struck the post.
Sergiy Nazarenko's deflected shot after 29 minutes secured a crucial win for Ukraine, with Wayne Rooney coming close for England in the dying seconds.
Green made an unwanted mark in history by becoming the first England keeper to be sent off - and coach Fabio Capello also experienced defeat in a competitive fixture for the first time.
The game was played out in a hostile atmosphere in Dnipropetrovsk, with referee Damor Skomina at one point threatening to abandon the game if any more flares were thrown on to the pitch after a second hold up in play.
England had already qualified for next summer's showpiece in South Africa, but their hopes of taking a flawless qualifying record to the World Cup were seriously undermined by that early red card for Green.
Milevskiy struck the woodwork for Ukraine and James distinguished himself with fine saves from Yaroslev Rakytskyy and Andriy Yarmolenko - but Capello will take great heart from the fight and spirit shown by England in the second half.
Capello will not take as much pleasure from a ragged defensive display, in which Ferdinand looked vulnerable throughout.
England's 10 men penned Ukraine in their own territory in the closing stages, and the outstanding Rooney had the home crowd holding its breath when his low shot flew inches off target in the last minute.
The game was only two minutes old when the first barrage of flares came flying on, with many landing in the vicinity of England keeper Green.
Green got the nod ahead of James as the battle continues to be England's World Cup keeper continues - but he saw his evening cut short when he was dismissed after only 13 minutes.
Ferdinand was the culprit with a desperate piece of defending that allowed Milevskiy a clear run on goal. Green hauled him down as he went around the keeper, and referee Skomina pointed to the spot before showing Green the red card.
Aaron Lennon was sacrificed for James, whose first task was to face Shevchenko's penalty. He was sent the wrong way, but was grateful to see the spot-kick bounce to safety off the outside of the post.
James was helpless as Ukraine took a deserved lead after 29 minutes, although it was once again the result of defensive carelessness from England.
Ashley Cole conceded possession near the edge of the area, and when the ball broke loose to Nazarenko his 20-yard shot deflected off the head of the Chelsea defender past the motionless James.
England almost delivered the instant response when Rooney's clever pass released Frank Lampard, but he pulled his finish across the face of goal and wide.
Milevskiy almost doubled Ukraine's advantage after 32 minutes with a thunderous long-range drive that thundered off the post with James beaten.
England coach Capello made a change at the interval as Steven Gerrard, who picked up a thigh injury, was replaced by James Milner.
Ukraine picked up the pace after the break and were only denied a second when James showed tremendous agility to turn away Rakytskyy's strike.
England had tried to be positive, even with a numerical disadvantage, and Capello attempted to inject more potency into his attack when he replaced the tiring Emile Heskey with Carlton Cole after 71 minutes.
And James was the hero again with 11 minutes left, making a crucial block from Yarmolenko as he raced clear when England's defence was caught square.
Rooney gave the Ukraine fans that late scare, but their side held on for a victory they ultimately deserved.
Ukraine: Pyatov, Kucher, Kobin, Rakitskiy, Khacheridi, Gai, Tymoschuk, Nazarenko (Yarmolenko 67), Rotan, Shevchenko (Gusev 90), Milevskiy.
Subs Not Used: Shovkovskiy, Voronin, Seleznyov, Shevchuk, Mykhalyk.
Booked: Kobin, Khacheridi, Tymoschuk, Rotan.
Goals: Nazarenko 29.
England: Green, Johnson, Ferdinand, Terry, Ashley Cole, Lennon (James 15), Carrick, Lampard, Gerrard (Milner 46), Rooney, Heskey (Carlton Cole 72).
Subs Not Used: Bridge, Upson, Barry, Agbonlahor.
Sent Off: Green (14).
Referee: Damir Skomina (Slovenia).