It was their second win in three games - they beat Somerset on Monday - as they moved up to second place in the group, level on points with leaders Somerset with a game in hand.
Glamorgan lost the toss and made 153 for nine in a match reduced to 25 overs per side, but Middlesex, who will struggle to now make the semi-finals, could only make 142 for nine despite skipper Neil Dexter scoring 54 from 52 balls.
Glamorgan made a fortuitous start when Gareth Rees top-edged Steve Finn for six in the first over but Finn got his revenge having Mark Wallace caught at point while at the other end James Harris delivered a tight three overs as the home side reached 31 for one after seven overs.
That became 38 for three after Toby Roland-Jones struck twice to remove Chris Cooke and skipper Marcus North.
Jim Allenby's arrival saw some impetus injected into the Glamorgan innings as he took a four and a six off consecutive balls from Dexter, before Paul Stirling's part-time off spin claimed two wickets.
Allenby holed out on the mid-wicket boundary before Murray Goodwin top-edged a sweep to short fine leg as the Welsh county found themselves 85 for five. Harris made that 89 for six as Rees was bowled making 32 from 53 balls.
Some much-needed impetus to the Glamorgan innings came with 14 coming off an Ollie Raynor over including a Ben Wright six over long off and 18 from an over from Harris.
The start of the batting power play saw Wright holing out to Finn ending a 43-run partnership with Wagg, who helped Glamorgan take 21 runs from the final three overs.
Middlesex struggled at the start of their reply. Jim Allenby bowled Dawid Malan with the fifth ball of the Middlesex innings and a good Michael Hogan over saw Joe Denly edge behind to leave Middlesex 14 for two at the end of the fourth.
Allenby struck again in the seventh over as Paul Stirling drove him straight to mid-off to leave the Panthers 30 for three.
And Jones turned the game right in Glamorgan's favour with two wickets in consecutive balls to leave Middlesex 32 for five in the eighth over. He got the prize wicket of Morgan with his third ball helped by a good catch by Chris Cooke diving forward at cover and followed that up by trapping Voges lbw.
But Middlesex recovered through John Simpson and Dexter who put on 59 in nine overs until the impressive Simpson was snaffled at mid-wicket off Dean Cosker, who took three wickets from 11 balls as the Panthers found themselves 138 for eight.
Dexter, with the only half century in the match, got it down to 20 required from the final over but he holed out to the second ball of the final over.