Celeb menge was a good antagonist, smart too. And as much as it pained me too play the Triss torture scene, the interaction between was very good. You can even tell he didn't completely buy Geralt's story, as he burns the papers before going to check up on the other room. Sadly he was completely underused.
Whoreson Junior was pure evil, and in a way too simple. I did enjoy having Geralt beat the crap out of him, then fighting him again as Ciri, then killing him lol.
Wild Hunt. They could have either added more interactions with them, so we know their backstory a lot better. Or go the other route and keep us in the dark but make their presence as an overwhelming, unstoppable force be felt more. As it is, they just raided two villages (war did much worse) and were defeated by a falling bridge at one point.
Radovid is too focused on trying to find some deeper meaning on a game of chess so he doesn't have time to be a good villain.
Why is Sigi even on that list?
So as many here, I'll have to go with the Crones. Powerful, evil, the way they were presented was awesome. Good interactions. Good boss fight. Honorable in their own twisted way. Respectable and ancient. Creppy as fuck.
Can't we add the king's window from Denmark? At least she had some depth. Still would vote for the crones.
And if we want to go meta, let's add money limitations and time constrains, since they were what ruined most of the third act.