The Saints were indebted to errors from Boro’s backline for their first two goals, but they were worthy of all three points after dominating from start to finish.
After Jose Fonte had gone close, Guly opened the scoring when he was allowed a free header from Danny Butterfield’s cross.
Boro had not learned their lesson, though, as Rickie Lambert peeled off his marker to head back across goal before Guly tapped in.
Substitute David Connolly then ensured the win in the 80th minute by striking high into the net after good work from Lambert.
It was a sobering afternoon for the visitors and they are now six points behind Southampton following their first ever loss at St Mary’s.
Boro could have moved level on points with the league leaders with a win but it was the hosts who made a lively start, and a drive from Jose Fonte was deflected over the bar.
They continued to dominate proceedings and it came as no surprise when Guly gave them the lead after 15 minutes with a powerful header from Butterfield’s superb right-wing cross.
The visitors had only conceded three goals in six away matches before today, but they only had themselves to blame after allowing Guly a free header.
And more poor defending allowed the midfielder to double his and Southampton’s tally in the 29th minute.
Adam Lallana’s left-wing cross to the back post found Lambert in acres of space and the striker’s header back across goal gave Guly a simple tap-in.
It was all one-way traffic and Lambert nearly got in on the act but he narrowly headed wide from Butterfield’s centre, while Guly was denied a first-half hat-trick when his shot came back off the post after he had latched on to Lallana’s delightful through ball.
Despite being firmly on the back foot, Scott McDonald had a golden opportunity to halve the deficit just before the interval but, after he had rounded Saints goalkeeper Kelvin Davis, the striker could only find the side netting.
That failed to inspire Mowbray’s men as Southampton continued to control the tempo in the second half and Jack Cork’s 25-yard effort forced a fine save from Boro goalkeeper Jason Steele.
The game settled into a lull thereafter, with neither side forcing the initiative.
That was until Connolly, who had replaced Guly in the 55th minute, made sure of the victory 10 minutes from time when he fired into the top corner following Lambert’s lay-off.
Lambert himself nearly added gloss to the victory but his fiery volley was well saved by Steele, while Nicky Bailey’s 25-yard drive was parried by Davis to ensure Saints kept a clean sheet.