I often go to Birmingham from Winchester or Basingstoke. Obviously you will need to look at this closer to the time, but if you are taking XC then try tickets to Banbury, then a separate Banbury to Birmingham Moor Street/Snow Hill on Chiltern only trains. Usually there isn't much of a wait and the service isn't much slower overall depending where you are heading to in Birmingham itself, and the train will probably be much less crowded. Sometimes there is a noticeable saving, though at other times its more expensive! An additional advantage is being able to use a network rail card all the way up to Banbury if you don't have a national one, regardless if you use Chiltern or not.
From Southampton there may be another potential split at Basingstoke or Reading as well.
If you go via London, also look at routes which go from Clapham Junction - Watford Junction on a Southern service. This won't take any longer than taking the tube in the centre, and can be cheaper.