Bardsley's opener cancelled out.
Sunderland were pegged back by Southampton after taking the lead as the spoils were shared on Wearside.
The Saints enjoyed plenty of possession and Simon Mignolet was arguably the hosts’ best player, producing a string of fine saves.
The away side dominated the opening 45 minutes, but Sunderland improved after the break and took the lead with 22 minutes to play as Phil Bardsley's deflected shot found the back of the net.
But the defender's effort was soon cancelled out by sub Jason Puncheon at the second attempt as the visitors claimed a point.
Di Canio made just one change for the final home game of the season, drafting in Bardsley at right-back in a straight swap for the suspended Craig Gardner.
But the opening stages were low-key with the Saints enjoying much the better of proceedings.
Almost half an hour had elapsed before the Stadium of Light saw the first chance, Rickie Lambert pulling down a high ball and testing Mignolet with a powerful effort which the keeper claimed away to his left.
And the Belgian was in action again soon afterwards, parrying away Jay Rodriguez's snapshot after Adam Lallana's corner pinballed around the Sunderland penalty area.
It wouldn’t be the last time that Rodriguez would cause problems for the home defence.
Sunderland were struggling to get in gear, but the game sprang into life in the final five minutes of the opening period with chances at both ends.
John O'Shea did well to sneak in at the far post and nod a corner back into the path of Adam Johnson, but the winger mishit his shot straight into the midriff of the diving Artur Boruc.
Saints continued to press and top scorer Rickie Lambert almost squeezed a half-hit volley through the legs of Mignolet, who was grateful to see the ball come to rest at his feet after striking the inside of his shin.
And a frenetic end to the half featured further opportunities as Larsson's blocked shot translated into a swift break by the visitors, with only a deft clearing header from Bardsley saving the day with visiting players lining up on the edge of the box.
Di Canio introduced Connor Wickham in place of James McClean at the break in an attempt to spark his side into life.
But it was Saints who continued to have the upper hand and Rodriguez almost opened the scoring with a 50th-minute header which Mignolet, springing left, turned away on the line.
He was at it again to deny the same player seven minutes later as the former Burnley striker soared above the Sunderland defence to nod the ball into the keeper's arms.
The let-off seemed to spark Sunderland into life and the hosts began to ask questions down the flanks.
And they cashed in with 68 minutes played, taking the lead thanks to a fine finish from Bardsley – his first goal of the season.
Johnson, lurking on the edge of the area, managed to squeeze the ball into the path of the right-back, who let fly with a rising drive which took a nick off Jos Hooiveld's knee and nestled in the far corner of the net.
However, the lead didn't last long as two Southampton subs combined to level the match eight minutes later.
James Ward-Prowse dug a cross out on the left and although Puncheon's close-range header was brilliantly blocked by Mignolet, the winger reacted first to hammer the ball high into the net from point blank range.
The equaliser sucked the wind out of Sunderland's sails and Southampton finished strongly.
They would have left with all three points but for Mignolet who produced heroics yet again late on, pulling off a fantastic diving save to tip away Lambert's drive after the striker raced clean through.
- McClean (Wickham)
- Larsson (Vaughan)
- Shaw Yellow
- Lallana (Puncheon)
- Rodriguez Yellow
- Cork (Ward-Prowse)
- De Ridder