He contributed a rapid 37, in Glamorgan's 149 for six, before claiming three wickets in the space of seven balls to undermine Yorkshire's impressive start.
Seemingly well set at 86 for one in pursuit of an adjusted target of 175 in 22 overs, Yorkshire their last nine wickets for 67.
Glamorgan's win lifted them to second place in the table, just two points behind Worcestershire Royals, with a game in hand.
Croft finished with three for 27 from five overs, although Dean Cosker made a late surge for the bowling honours with four of the last five wickets as Yorkshire were bowled out for 153. Cosker's figures were four for 17 from 3.2 overs.
Chris Silverwood's departure after a rapid 55 signalling a shift in the balance of power in the game. He hit nine fours in his 39-ball innings.
The Glamorgan innings was punctuated by a rain interruption after 14 overs, by which time they had reached 84 for one. Croft was the man out - he struck seven fours in his 45-ball knock.
Glamorgan resumed their innings in the knowledge that they had only a further eight overs remaining and were dealt a further blow by the immediate loss of Ian Thomas, who had faced 44 balls for his 40.
Mark Wallace and Adrian Dale added 18 in the last two overs, the importance of which was evident only after Yorkshire had lost their last nine wickets for 67.
Bookmark or share this story with: