Pretty much any USB controller will work. Don't normally need any special software support, and USB specifies the protocol, unless you've got some kind of oddball features on the thing. You can't go too far wrong.
Of the ones that I've used, I've currently settled on the 8Bitdo Ultimate Bluetooth (there's also a non-Bluetooth Ultimate controller that they make, but it doesn't have Hall effect thumbsticks, which I want). Only downside is that it's only available with a Nintendo face button layout, whereas I'd prefer the Xbox face button layout. They do sell replacement buttons, and Steam lets you flip the layout for games using Steam Input. Works with both USB and Bluetooth, and it comes with a charging cradle if you use it wirelessly.