England's victory gave them an unbeatable 2-0 lead in the four-match series.
Left-arm spinner Giles's haul of five for 57, on his Warwickshire home ground, was his best in a Test innings and helped him to Test-best match figures of nine for 122.
That followed the 31-year-old's nine for 210 in England's 210-run first Test win at Lord's.
At tea West Indies were 139 for three, needing another 340 runs to reach their victory target of 479, but still with hopes of batting out the day. Chris Gayle was 65 not out and fellow left-hander Shivnarine Chanderpaul 24 not out at the interval. Gayle had already taken a Test-best five for 34 Sunday with his off-spinners as England were hurried out for 248.
Giles took two wickets in three balls to reduce West Indies to 172 for five. He switched to the Pavilion End where Australian umpire Darell Hair, who has a reputation for giving batsmen out lbw if they are not playing a shot, was standing. Chanderpaul then fell to Giles in just such a fashion for 43.
Giles followed up by bowling Dwayne Bravo for nought with one that pitched on leg and hit off - a repeat of Bravo's first innings exit.
Giles then had Gayle out for 82 when Andrew Strauss took his second sharp silly point catch of the innings, making it three wickets for four runs in nine balls.
Fast bowler Matthew Hoggard continued the rout to the roaring delight of a sun-drenched crowd.
Wicket-keeper Ridley Jacobs went for a pair when his miscued drive off Hoggard was athletically caught by a back-pedalling James Anderson at mid-off.
The Yorkshire quick then had Pedro Collins was plumb lbw for nought.
West Indies were now 182 for eight after losing five wickets for 10 runs in 33 balls.
Fast bowler James Anderson then wrapped up the game when he bowled last man Jermaine Lawson for two.
Earlier England opener Marcus Trescothick became the first man in 40 Edgbaston Tests to score hundreds in both innings at the ground.
Somerset left-hander Trescothick, 28, who made 105 in the first innings, was run out for 107 - his eighth Test hundred.
Hoggard sent England on their way in the field when Devon Smith (11) edged to first slip Trescothick, West Indies 15 for one.
Giles then had first innings centurion Ramnaresh Sarwan superbly caught one-handed for 14 by a diving Strauss.
His exit brought in West Indies captain Brian Lara, off the field earlier Sunday hand with a right-hand injury, with his side in trouble at 54 for two.
The 35-year-old left-hander needed just 20 runs to become the fastest batsman and only fourth in all to score 10,000 Test runs.
But on 13 he was deceived by Giles and caught at slip by Andrew Flintoff. Replays suggested the ball may have hit his pad alone but Lara had to go.