I'ts been a long time since I played, much less DMed, 3.5e, so I'm going to try to keep what I say pretty high-level and hopefully system-agnostic, but I'm also saying this as someone who exclusively plays Pathfinder 1e and Starfinder, so forgive any bias. Also, some of what I suggest will require some amount of customizing enemies. That said, these are the techniques I use when DMing for strong players or large groups.
Enemy Action Economy
Giving the enemies more things to do is the easiest way to design harder encounters. There are two ways I generally accomplish that: putting more enemies into the encounter and giving an individual enemy more actions per turn.
Put More Enemies In Encounters
This is the most obvious, and easiest, way to increase enemy action economy. Determine the CR you want to achieve, use 1/3 to 1/2 the total XP budget on a "commander", then spend the rest of the XP on relatively weak creatures that are still threatening in groups. Finding enemies that satisfy that can be tricky since it requires knowing where your party's weak points are and choosing enemies to exploit them.
However, packing a lot of enemies into an encounter comes with a few caveats:
Primarily single-target-focused parties will spend much longer in combat. This can be a good thing or a bad thing, depending on what you and your players enjoy doing
This may not actually be harder for AoE-focused parties. If your players are spamming AoE spells or making four attacks each round, many lower HP enemies do not necessarily take longer to kill or present more difficulty than fewer higher HP enemies.
It becomes very easy to tip this too far in the enemies' favor. Two bad rounds for the party or one exceptionally good round for the enemies can make an already challenging encounter insurmountable
Design or Modify Enemies to Perform Multiple Actions Each Round
This is the more difficult way to accomplish this, but if done well, it can be incredibly rewarding for both you and your players. You because you only have to focus on tactics for one or two enemies and can spend more time storytelling during combat. Your players because they have a clear tactical goal to focus on and characters (especially casters) who normally feel pressured to provide AoE-damage or wide-area battlefield presence can instead focus on single-target damage/control for once.
As a specific example, I once recreated the Constructor from Borderland 2 in Starfinder and used it in a few encounters. While statting it, I had a few things I was designing around: I had a mix of new and experienced players, the party consisted of seven characters, I wanted combat with it to be high-tension but short. So I designed it to make four actions per round. It took it's normal move and standard each round, but also had a list of other actions it could perform two of each round (one of which was knocking back melee characters, forcing them to spend actions to get back in range and reduce the number of full attacks they were able to make).
Make Combat About Solving a Puzzle
Make combat less about who does the most damage. Don't remove the stakes from a fight, but create a condition (or multiple conditions) for actually winning. This forces players to think about what they're doing and can be much more engaging than simple battlefield tactics. Here are some examples of how to accomplish this.
Design an enemy that has a hard-to-bypass DR and/or SR and come up with something the players can do to temporarily (or permanently) disable it. It can be something simple like destroying an object in the arena first (like the fight with Seath in Dark Souls) or something subtler like needing to cast a certain spell in its vicinity.
Create an arena that forces the players to stay in specific places. You could have some sort of mystical light that debuffs players if it hits them, forcing the players to try to draw enemies to shaded areas and deal with them there. Make the punishments for being hit by the light scale up each time they get seen (hp damage, physical stat damage or mental stat damage, attack/skill check penalties, etc.).
If you and your players like lighter/humorous encounters, go full MMO and make an enemy that forces players to literally solve riddles or math questions or perform simple tasks to deal damage. This is obviously going to be more of a joke, but it can lead to great interactions between PCs when the 8 INT fighter is asked to do simple multiplication, fails the DC 12 INT check and gets laughed at by the wizard, then laughs at the wizard when they can't climb a thirty foot rope unassisted.
Plan Your Tactics Ahead of Time
Don't just choose enemies for an encounter. Think about the ways the creatures work together or how they respond to certain things. You know what your party does, so have actions ready to respond to those things. Also, consider the ways in which the enemies will engage the party.
If you have a large group of enemies, consider splitting them up and making the first group the one the party finds initially and have the second group show up in the second round to flank them.
If you choose monsters from the monster manual, make sure you use the spells/special attacks they have. If you choose a CR 6 enemy that can cast Burning Hands at CL 3, but it never actually uses it, then you've actually chosen a CR 4 or 5 enemy instead. I have played with a lot of DMs that pick cool looking monsters and then have them exclusively full attack each round. It doesn't matter what the CR of a monster is, there's only so much damage natural weapons can do.
Lastly, figure out how to play to the enemies' strengths. If you're playing in a specific terrain, find enemies that get bonuses in that terrain. Give one of the enemies bard levels and have them buff his allies. Choose enemies that are good at closing distances and flanking.
If you have any questions or would like me to clarify anything, feel free to ask. I could write a lot more about this, but this is already pretty long and I don't want to ramble (also it's almost time to leave work).