This is not going to be cheap. The cheapest option is likely to involve travelling Monday evening (Advance each way at up to £26 so not more than £52, or £56.40 for a "via Salisbury" offpeak return for greater flexibility), and finding a moderately priced B&B for Monday night.
On Tuesday, the £39.10 Branksome-Reading Anytime Day Return seems reasonable value and is valid on the 0507 (which is the only option for a pre-9am arrival).
Coming back on Tuesday evening, there are Advances from Cardiff to Southampton or Branksome at reasonable prices on the 1830 or 1930 (£18 Cardiff-Southampton on the 1830 or £11.50 on the 1930 - a bit more to Branksome).
The killer, price-wise, is Reading-Cardiff on the 0711 arriving 0849. I'll see if I can find any useful suggestions for that.
For that Reading-Cardiff train, Raileasy/Transplit suggest splitting at Swindon, so £34.80 Reading-Swindon and £25.30 Swindon-Cardiff for anytime singles.
So, option 1:
Outward via Reading on the 0507 arriving 0849, and return on the 1830 via Salisbury: £39.10 + £34.80 + £25.30 + £18 = £117.20
and option 2:
Outward via Reading on the 0507 arriving 0849, and return via Reading: £39.10 + £34.80 + £32.80 Swindon-Cardiff return + £14 Swindon-Reading super offpeak single = £120.70
Trainsplit suggest splitting the Branksome-Reading ticket into a £10.40 Branksome-Totton anytime day return and a £20.20 Totton-Reading anytime day return saving £8.50 off the total for each of my options. But that only works if you'll be on trains that call at Totton. Otherwise, splitting Branksome-Reading at Southampton will save a little bit.