For the Cross Keys battle CSA must defend two flagged positions a few hundred meters apart along a slight ridge while a more numerous Union force attacks. The northern position is more important to the Union as an objective. You can bring 10 units. I suggest 9 infantry brigades and one strong artillery unit.
To defend against the Union attack, I use an old goalkeeper’s trick. I pack the southern position with five brigades, which is more than it needs, leaving the north position weaker than it should be and inviting a concentrated Federal attack there. I detach two or three skirmisher units plus a full brigade and position them in the woods well to the NW and N of the N position, out of sight, to harass the right flank of the Union attack as it comes in from the NE.
Once the Union commits to the attack on the N position, I swing all five infantry units at the S position across the river. This southern CSA force should quickly rout the small Union forces facing it (maybe a brigade and an artillery unit) and then aggressively flank the main Union force from the S. At the same time the skirmishers and flanking brigades to the N/NW of the N position will be slowing/routing the Union right flank units as they charge across open territory.
I can then encircle and annihilate the Union force, or at least force it out into open fields where it will incur heavy losses from my units firing from forest cover. It can be a bit costly in manpower to do this, and it’s hard to get every last Union unit to shatter before time runs out. But in general it does help to reduce the Union numbers whenever you can—and this is one clear opportunity.
Note that while CSA typically will be at a 3-to-2 disadvantage in this battle, that disadvantage will sometimes end up being even worse than that, due to the (to me, opaque) scaling algorithm the game uses. In such cases, it might be better to use a more conservative strategy: Place two or three brigades at the S position and retreat them to the N when a non-defeatably large attack comes, and then, when the attack re-concentrates at the N position, use some of your brigades and skirmishers there to flank the Union right, eventually forcing them away from the N position and weakening them enough that you can easily retake the S position before time runs out.
The basic strategy I have outlined above is unnecessary for this battle when using the J&P Rebalance Mod (1.27.1a), because CSA can bring 13 units, rather than 10 in the vanilla game, and therefore can just stay in cover near the two flag positions, whittling down and shattering many of the Union brigades.