A fine Marc Bartra header cancelled out Angel di Maria's early opener but the Wales international settled a gripping encounter in Los Blancos' favour
After Angel Di Maria's first-half opener was cancelled out by Marc Bartra, the Wales international stormed down the left wing - running half the length of the pitch before poking the ball past Blaugrana goalkeeper Jose Pinto with just five minutes to play.
Bale's outstanding run - which started close to the touchline - saw him leave Bartra for dead with his pace, before he produced a composed finish to cap an outstanding performance, as Madrid won the trophy for a 19th time.
Neymar, who struggled throughout the 228th edition of the famous derby, then hit the post with two minutes left as Barcelona fell to a defeat that signals the end to a disastrous seven days for the Catalan giants and their under-fire coach Gerardo Martino.
First, they were knocked out of the Champions League quarter-finals, with Atletico Madrid's 1-0 second-leg win sealing a 2-1 aggregate triumph last Wednesday, before suffering a 1-0 loss at Granada on Saturday that appeared to end their Liga title defence.
Their latest setback means that they are now likely to finish without a major piece of silverware for the first season since 2007-08, one in which then coach Frank Rijkaard was sacked.
For Madrid, the victory marks Carlo Ancelotti's first trophy in charge of the club and he will be hoping to add to that with success in both La Liga and the Champions League.
As expected, Madrid talisman Cristiano Ronaldo was absent as he continues to battle knee and thigh problems, but Sergio Ramos recovered from a neck injury to start for Ancelotti's side.
Barcelona coach Martino had hinted that Carles Puyol could return from a knee injury in the build-up, but he left the captain on the bench, as fellow centre-back Bartra returned from a hamstring strain.
They could have done with Puyol's experience in the early stages, as Madrid made a fast start, with Bale flashing an early effort past the right-hand post.
The tension was predictably high - Isco was booked within three minutes for a challenge on Neymar - and Los Blancos continued to pour forward, with Bale's second shot in as many minutes going behind for a corner.
Di Maria, so damaging in the last meeting between the sides, then broke the deadlock in the 11th minute, finishing with aplomb following a quick counterattacking move that involved Isco, Bale and Karim Benzema.
The Argentine fired an angled left-footed effort through the legs of Jordi Alba and at Barcelona shot-stopper Pinto, who found the strike too hot to handle and was unable to stop the ball from creeping into the bottom corner.
Barcelona's first real chance came after Pepe and Neymar had clashed, and were booked, as Alba nodded straight at Madrid's Iker Casillas, and the defender then got back to superbly block Isco’s effort after Bale's clever pass.
Lionel Messi shot wide from 20 yards just before the break - in which Adriano replaced Alba - but Barca were still sluggish when play resumed, as Bale shot into the side netting before firing over six minutes later.
The introduction of Pedro, for the ineffective Cesc Fabregas, did little to stem the flow as a Benzema strike was touched onto the outside of the post by Pinto, before Bale had a goal correctly disallowed for offside after the goalkeeper had charged off his line from a corner.
Pinto was ahead of play, meaning just one defender was between Bale and the goal, and less than 60 seconds later the ball was in the back of Madrid's net, with the effort counting on this occasion.
Bartra was responsible, with the young defender losing his marker, Pepe, and rising highest to head Xavi's 68th-minute corner into the net. It was a perfectly placed header, but parity lasted just 17 minutes.
When Luka Modric hit the outside of the post, the game had seemed destined for extra-time but Bale was on hand to steal the show.
The Welshman was initially impeded by Bartra but showcased his speed to storm ahead of his marker and from there the defender, reluctant to foul the winger, could only watch on as Pinto was beaten with a toe-poked finish.
There was still time for Barca to push for a leveller, but Neymar lacked the necessary composure when presented with a chance right at the end, firing onto the post after he had got in behind the Madrid defence, as Madrid celebrated a famous win.