Cardiff City 2 Southampton 1
The Bluebirds included three new signings with Tom Heaton, Mark Kennedy and Ross McCormack all starting, while Jay Bothroyd and Miguel Comminges were on the bench.
Southampton were well on top in the early stages and Johnson and Glen Loovens were the busiest players on the field.
It was not until the 27th minute that the Bluebirds threatened the away goal but after a neat build-up, McCormack scuffed his shot and Kelvin Davis in the visiting goal gathered comfortably.
The Bluebirds started to put their game together and the new strikeforce of McCormack and Thompson both went close around the half-hour.
A header by Thompson gave Peter Whittingham space but his shot on the turn flew over the bar.
Then the hard-working Thompson had a low drive turned round the post by the busy Davis.
The opening goal came in the 41st minute when Chris Perry could only partially clear a Thompson header and the former Rangers striker slotted the loose ball home.
In the last minute of the opening period, Andrew Surman beat Whittingham on the byline and crossed hard and low for McGoldrick to side-foot home from close range.
The Saints opened the second half well and Johnson had to throw himself in front of a Simon Gillett shot in the 55th minute as the visitors looked the more likely to add to the score.
Chances then started coming at the away end and Johnson and Loovens both went close with headers.
Bothroyd replaced Thompson in the 66th minute and immediately won a corner with a twisting run down the left flank.
The Saints used all three subs as they looked for victory, but it was the Bluebirds who took all three points when a Johnson header from a Stephen McPhail free-kick in the last minute just crept over the line.