The visitors won the semi-final with 19 balls to spare as captain Michael Klinger hit 137 not out and New Zealander Hamish Marshall 78 not out to help overhaul Yorkshire’s 263-9.
Klinger and Marshall added 177 for the third wicket in 28 overs - Gloucestershire’s highest-ever one-day partnership against Yorkshire - as the hosts dreams of completing the County Championship and one-day cup double were comprehensively dashed.
It was Yorkshire’s 16th defeat in their last 19 one-day cup semi-finals and their 11th reversal against Gloucestershire in the last 14 one-day meetings between the teams.
Gloucestershire will now play the winner of tomorrow’s semi-final at the Oval between Surrey and Notts in the final at Lord’s on September 19.
Yorkshire’s innings was underpinned by a splending knock by Adam Lyth - his highest score for over three months.
The England opener hit 96 after Yorkshire had been put into bat in glorious sunshine.
It seemed a curious decision by the visitors, who began poorly when James Fuller sent down three wides in the opening over.
Lyth got his eye in by driving David Payne to the cover boundary and followed up by threading Fuller beautifully between cover and point.
As Lyth flourished, Gloucestershire delivered a masterclass in how not to start a semi-final, sending down plenty of wayward stuff on an excellent surface.
Lyth and fellow opener Alex Lees brought up a fifty stand from just 43 balls, Lees contributing just two of those runs.
The Yorkshire one-day captain was content to play second fiddle to his partner, who went to fifty from 41 deliveries with eight fours.
Lees had progressed to 21 when he was first out with the total on 103 in the 18th over, caught and bowled by Benny Howell.
Howell struck again when he had Jack Leaning lbw for eight to leave the hosts 127-2 in the 24th over.
Lyth hit the first six of the match when he lofted the left-arm spin of Jack Taylor over mid-wicket and looked odds-on to achieve only his second one-day century.
But he fell agonisingly short when he top-edged a pull off Fuller to deep fine-leg, where Payne judged a good low catch.
Lyth’s innings comprised 88 balls and included 10 fours and a six, and his dismissal left Yorkshire 159-3 in the 29th over.
It should have been 192-4 in the 34th, but Liam Norwell dropped a sitter off his own bowling when Jonny Bairstow had 34 to his name.
But the bowler atoned in his next over when he trapped Bairstow lbw without further addition as Yorkshire slipped to 198-4.
Will Rhodes was fifth out at 208 in the 39th when he lofted Taylor to Fuller at long-off, and Yorkshire fell to 226-6 in the 43rd when Gary Ballance was caught and bowled by Norwell for 27.
Tim Bresnan hit a breezy 27 before miscuing Payne to Michael Klinger at cover, and Rich Pyrah picked out the same fielder in the same position off Tom Smith.
Steve Patterson was run out off the last ball of the innings as Yorkshire managed just 43 off the last 10 overs.
Yorkshire: Lyth, Lees, Leaning, Bairstow, Ballance, Rhodes, Bresnan, Patterson, Pyrah, Carver, Fisher.
Gloucestershire: Dent, Klinger, Roderick, Marshall, Howell, Jones, Taylor, Fuller, Smith, Payne, Norwell.