Gloucestershire 294 for 8 beat Surrey 292 for 9 (Geddes 71, Taylor 3-38) by two wickets
But fast bowler Price, who came in at No 8 with Gloucestershire seemingly making a mess of a chase that had initially looked well on course, kept his head in an unbroken ninth wicket stand of 42 with Paul van Meekeren.
Price pulled the winning four off Matt Dunn to clinch a win, with 2.3 overs to spare, that is Gloucestershire’s fourth Group A victory and keeps alive their hope of qualification for the knock-out stages.
Earlier, Jack Taylor had followed up his 3 for 38 with five sixes in a 46-ball 51, but Gloucestershire kept losing wickets at vital times as a crowd of more than 3,500 lapped up the entertainment in warm sunshine.
Taylor’s seven overs of leg breaks contributed to 34 overs of spin bowled by Gloucestershire, with Pakistan international Zafar Gohar not conceding a single boundary in his ten overs. Gohar also bowled five of those overs in the first powerplay, having Ryan Patel held on the deep square leg ropes for five and, in the end, impressing with 1 for 35.
Gloucestershire’s chase did not start well, with Ben Wells bowled off stump for 12 by a beauty from Dunn and Australian Test left-hander Marcus Harris chopping into his stumps against Tom Lawes.
But, from 34 for 2, they counter-attacked through James Bracey and Ben Charlesworth, who added 61 in nine overs with some sparkling strokeplay.
Six of Bracey’s first seven scoring shots were fours, including extra cover driven and forced offside boundaries from the second and third balls he faced, from Lawes.
On 34, however, Bracey lifted his 25th ball to cover off Cameron Steel’s leg-spin and, on 49, Charlesworth chipped a return catch to Yousef Majid, Surrey’s 18-year-old slow left armer, just out of Cranleigh School.
Majid was then struck for three sixes in four balls by Taylor but Gloucestershire’s progress was checked when 21-year-old Oli Price, having batted commandingly to reach 45 from 33 balls with eight fours, was strangled down the legside by seamer Nick Kimber.
Gohar made a useful 30 before reverse-sweeping Majid to short third man, and Taylor struck further legside sixes off Lawes and Majid before holing out to deep midwicket in the 39th over. When Smith was run out by Geddes in the next over, the game was in the balance at 252 for 8 – but Price and Van Meekeren were equal to the task in hand.
Surrey’s innings was built upon a 102-run second wicket stand in 17 overs between Geddes and Steel, and then a further partnership of 51 for the third wicket by Geddes and Josh Blake.
But that initial momentum stalled when Van Meekeren had Steel caught at the wicket for a fine 54-ball 61 with one that bounced and Oli Price’s off spin then dismissed both Geddes and Blake (31) during his excellent seven-over spell of 2 for 34 from the Vauxhall End.
Smith’s left-arm spin accounted for both Nico Reifer, brilliantly caught and bowled with a diving left-handed effort for 11, and Sheridon Gumbs, who on 17 was unfortunate to pick out Wells at short third man with a sweetly-hit reverse sweep.
Suddenly, 181 for 2 had become 222 for 6 in 11 overs of struggle against the two spinners and it took Lawes’ third successive Royal London Cup half-century to pull Surrey up to a defendable total.
Lawes flipped Van Meekeren for an extraordinary six to fine leg when the Dutch international fast bowler was reintroduced for the 45th over, and then produced a similarly cheeky stroke to the next ball to flick it to fine third man for four.
Kimber managed a few meaty blows before skying Taylor to square cover on 17 and Gloucestershire’s skipper – taking on the responsibility of bowling three death overs – then dived to his right to send back Conor McKerr for 2 with a smart caught and bowled.
Lawes swatted Van Meekeren over deep midwicket for his second six and then reverse-slapped Taylor for four to reach his fifty in the final over before, on 50 from 40 balls, mis-hitting to short third man where Van Meekeren ran in to take a good tumbling catch.