London - Birmingham City beat Aston Villa 2-1 in a Midlands derby and Roy Keane's struggling Ipswich Town upset West Bromwich Albion 1-0 to reach the League Cup semi-finals on Wednesday.
The match at St. Andrews was heading for extra time until Birmingham's Serbian striker Nikola Zigic latched on to a low cross to grab the 84th-minute winner against last year's beaten finalists.
A 69th-minute penalty by Grant Leadbitter was enough to send Championship Ipswich, reeling from four straight league defeats including a 4-1 loss to local rivals Norwich, through at a cold and wet Portman Road.
Premier League tail-enders West Ham United thrashed holders Manchester United 4-0 on Tuesday and Arsenal, now the clear favourites for the trophy, saw off Wigan Athletic 2-0.
Birmingham took the lead against the run of play with a 12th-minute penalty after Lee Bowyer was bundled to the ground by Richard Dunne.
Sebastian Larsson slotted home from the spot but his strike was cancelled out in the 30th by Gabriel Agbonlahor, returning from illness, moments after a strike by Zigic was ruled offside.
The defeat was a bitter blow to Villa's French manager Gerard Houllier, who won the cup twice as Liverpool coach.
Birmingham fans, celebrating their first appearance in the last four in 10 seasons, invaded the pitch after the final whistle.