Hobart Hurricanes 120 for 9 (Wright 56, Neser 4-35) beat Brisbane Heat 118 for 8 (Peirson 39) by two runs
On a two-paced surface, which proved difficult for batting, Heat endured a see-saw chase of 121 and appeared on course at 103 for 4 in the 17th over.
But they stumbled and it came down to a dramatic last over where Heat needed 10 runs to lock up third spot and a home knockout final. David did enough against James Bazley with Hurricanes now needing Melbourne Stars to defeat Sydney Thunder, who can climb into the finals with victory in the latter match on Wednesday.
They obliged in menacing early bursts with Meredith removing Usman Khawaja and then Ellis knocking over Marnus Labuschagne's off stump with a gem of a delivery to revive Hurricanes.
Hurricanes were suddenly in the box seat when Heat lost wickets in consecutive deliveries in the sixth over when Matthew Renshaw was run out by a brilliant gather and direct throw from Zak Crawley.
After Meredith's initial three-over spell, Hurricanes weren't as threatening and clearly missed left-arm spinner Paddy Dooley, who has starred in a breakout season but missed due to a groin injury.
With their frontliners bowled out, Hurricanes fortunes rested on David and he delivered with accurate full deliveries to fluster Bazley. He helped run out non-striker Matthew Kuhnemann on the third delivery before the twists continued when David bowled a full toss that Bazley hit for six. He recovered to thwart Bazley on the final two deliveries to keep Hurricanes' season alive at least momentarily.
Heat fall apart at the deathHeat will be ruing letting third spot slip through their fingers. They struggled early before a composed Peirson and Hain combined for a 73-run partnership to dig Heat out of a hole.
Peirson, who was Heat's most reliable batter during their early season struggles, mustered his wealth of experience while Hain showed why he's become a key part of the middle-order with clever flicks on the leg-side.
Hain also showed his toughness after the blow from Meredith and remained at the crease, but fell shortly later with Heat still 18 runs short. Peirson then Bazley were unable to be the hero as Heat will now finish fourth or fifth.
Swepson continues strong rebound ahead of India tourLegspinner Mitchell Swepson was dropped earlier in the season and failed to take a wicket in his first five innings that he bowled.
But he's hit back hard recently and bowled particularly tidily in a much-needed tonic ahead of a defining Test tour of India for Swepson. He continued his strong bounce back with a menacing spell to tie down Hurricanes' powerful batters in the middle overs.
Swepson conjured sharp turn although his only wicket was rather fortuitous when a long hop snared struggling Ben McDermott, who was brilliantly caught by a diving Marnus Labuschagne.
He conceded just one boundary in his four-over spell to finish with 1 for 17 to play his role in a disciplined attack with seamer Michael Neser claiming the spoils with a four-wicket haul.
Hurricanes' rejigged batting order strugglesHurricanes on paper have arguably the most explosive batting order in the competition. But they've badly underperformed and Hurricanes entered the clash on the brink.
Opener McDermott, another out of form batter, moved down to No. 4 and replaced skipper Matthew Wade who shifted to No. 6 - a position he occupies for Australia but hadn't batted for Hurricanes since BBL07.
The changes didn't provide the necessary spark with Hurricanes losing wickets regularly. McDermott and Wade both fell cheaply with only Wright saving Hurricanes from embarrassment with a run-a-ball 56 after a watchful start.
He upstaged his more high-profile teammates and his knock proved the standout in a low-scoring contest.
Tristan Lavalette is a journalist based in Perth