Aston Villa held off a spirited Swindon Town fightback to progress to the Capital One Cup quarter-finals.
Villa held a 2-0 lead at half-time after Christian Benteke dived between two Town defenders to head in and Gabriel Agbonlahor fired in a low shot.
Swindon hit back through 18-year-old substitute Miles Storey, who netted two quick goals from inside the area to give Town hope.
But their efforts proved to be in vain as Benteke lashed home a late shot.
Aston Villa's League Cup joy
Aston Villa are through to the quarter-finals of the League Cup for the third time in four seasons
Villa were the first winners of the League Cup and have triumphed in the competition five times in 1961, 1975, 1977, 1994 and 1996
Paolo Di Canio's Swindon were looking to continue their destructive form against higher opposition, which has seen them win eight of their last 11 meetings against teams sitting above them in the Football League.
And they almost caused another upset against Paul Lambert's Villa side, who have won just one Premier League game this term.
It was Swindon who looked the most lively early on but they lacked the cutting edge up front, with former Villa youngster James Collins scuffing wide from Matt Ritchie's cross.
Villa survived a scare at the back as Paul Benson's shot on the turn was forced off the line by Matthew Lowton, and the visitors immediately hit back on the break.
Stephen Ireland provided a cross for Benteke to nod past Swindon keeper Wes Foderingham.
Villa found themselves further ahead thanks to Agbonlahor's superb solo effort, which saw him cut inside from the left flank and power home from the edge of the area.
Swindon had a number of chances after the restart - Gary Roberts poked wide from two yards out and Benson could not latch on to Ritchie's inswinging cross while Foderingham did well to stop Benteke's effort with his feet at the other end.
Di Canio introduced Andy Williams and Storey to the game and the substitutes invigorated his side.
Storey, a product of Swindon's academy, bundled home Raffaele De Vita's cross and flicked in a second three minutes later from Williams's volley to send the home crowd wild.
Both sides pushed to find the all-important third and it was Villa who kept their nerve to make the breakthrough as Benteke found himself unmarked in the area and slotted home with ease.
Full Time The final whistle is blown by the referee.
Miles Storey gives away a free kick for an unfair challenge on Enda Stevens. Shay Given takes the indirect free kick.
Assist by Eric Lichaj.
89:31 Goal scored
Goal! - Christian Benteke - Swindon 2 - 3 A Villa Christian Benteke scores a goal from deep inside the penalty box to the bottom left corner of the goal. Swindon 2-3 Aston Villa.
Andy Williams takes a shot. Effort from just inside the penalty box by Andreas Weimann strikes the post. Blocked by Eric Lichaj.
Fabian Delph has shot on goal from just outside the box which goes wide of the right-hand upright.
Substitution Stephen Ireland leaves the field to be replaced by Darren Bent.
Matt Ritchie produces a left-footed shot from just outside the box that misses to the right of the goal.
Substitution Barry Bannan leaves the field to be replaced by Fabian Delph.
Andy Williams provided the assist for the goal.
80:42 Goal scored
Goal! - Miles Storey - Swindon 2 - 2 A Villa Miles Storey finds the back of the net with a goal from close range to the bottom right corner of the goal. Swindon 2-2 Aston Villa.
The assistant referee signals for offside against Christian Benteke. Free kick taken by Alan McCormack.
Assist on the goal came from Andy Williams.
77:49 Goal scored
Goal! - Miles Storey - Swindon 1 - 2 A Villa Miles Storey finds the net with a goal from the edge of the penalty area to the bottom right corner of the goal. Swindon 1-2 Aston Villa.
Booking Gabriel Agbonlahor receives a yellow card.
Corner taken left-footed by Matt Ritchie, Wes Foderingham fouled by Ron Vlaar, the ref awards a free kick. Free kick taken by Wes Foderingham.
Substitution Miles Storey replaces James Collins.
Unfair challenge on Andreas Weimann by Jay McEveley results in a free kick. Indirect free kick taken by Shay Given. Inswinging corner taken left-footed by Barry Bannan from the right by-line to the near post.
Shot from just outside the box by Barry Bannan goes over the bar. Karim El Ahmadi concedes a free kick for a foul on James Collins. Simon Ferry takes the indirect free kick.
Substitution Gary Roberts leaves the field to be replaced by Louis Thompson.
Christian Benteke takes a shot. Blocked by Wes Foderingham.
Aden Flint fouled by Christian Benteke, the ref awards a free kick. Wes Foderingham restarts play with the free kick.
Foul by Jay McEveley on Eric Lichaj, free kick awarded. Free kick taken by Shay Given.
Gary Roberts takes the inswinging corner, Header from deep inside the area by James Collins goes over the bar.
Cross/shot by Gary Roberts.
Barry Bannan takes a shot. Outswinging corner taken right-footed by Barry Bannan played to the near post. Blocked by Joe Devera.
A cross is delivered by Barry Bannan.
Short corner taken by Gary Roberts, save made by Shay Given.
Free kick awarded for an unfair challenge on Tommy Miller by Stephen Ireland. Matt Ritchie restarts play with the free kick.
Corner taken by Barry Bannan played to the near post, clearance made by James Collins.
Matt Ritchie delivers the ball, save made by Shay Given.
Substitution Andy Williams on for Paul Benson.
The match restarts for the second half.
45:00 +2:30 Half time
Half Time The referee calls an end to the first half.
The referee blows for offside. Shay Given takes the free kick.
Gary Roberts is flagged offside by the assistant referee. Free kick taken by Shay Given.
Andreas Weimann takes a shot from 20 yards. Inswinging corner taken from the right by-line by Barry Bannan. Aden Flint makes a clearance.
Assist on the goal came from Stephen Ireland.
38:57 Goal scored
Goal! - Gabriel Agbonlahor - Swindon 0 - 2 A Villa Gabriel Agbonlahor grabs a goal from just outside the box to the bottom right corner of the goal. Swindon 0-2 Aston Villa.
Eric Lichaj fouled by Matt Ritchie, the ref awards a free kick. Shay Given takes the indirect free kick.
The ball is sent over by Joe Devera.
The assistant referee signals for offside against Andreas Weimann. Free kick taken by Wes Foderingham.
Gary Roberts fouled by Karim El Ahmadi, the ref awards a free kick. Alan McCormack takes the indirect free kick.
Stephen Ireland provided the assist for the goal.
Substitution Enda Stevens is brought on as a substitute for Chris Herd.
29:21 Goal scored
Goal! - Christian Benteke - Swindon 0 - 1 A Villa Christian Benteke scores a headed goal from close range. Swindon 0-1 Aston Villa.
Paul Benson takes a shot. Ron Vlaar makes a clearance.
Christian Benteke challenges Aden Flint unfairly and gives away a free kick. Wes Foderingham takes the indirect free kick.
James Collins crosses the ball.
Gabriel Agbonlahor crosses the ball, Joe Devera gets a block in.
Outswinging corner taken left-footed by Barry Bannan from the left by-line, Alan McCormack makes a clearance.
Booking Aden Flint goes into the book for unsporting behaviour.
Aden Flint concedes a free kick for a foul on Gabriel Agbonlahor. Free kick taken by Barry Bannan.
The assistant referee flags for offside against James Collins. Indirect free kick taken by Shay Given.
Shot from outside the area by Barry Bannan misses to the left of the goal.
Stephen Ireland challenges Jay McEveley unfairly and gives away a free kick. Wes Foderingham takes the free kick.
Centre by James Collins, Barry Bannan gets a block in.
Free kick awarded for an unfair challenge on Tommy Miller by Matthew Lowton. Wes Foderingham takes the free kick.
Inswinging corner taken right-footed by Tommy Miller from the right by-line, clearance by Karim El Ahmadi.
Centre by Barry Bannan, Matt Ritchie makes a clearance.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.