The Premier League side outplayed their hosts in the first half, but James Ward-Prowse fired over and Cuco Martina shot wide.
Substitute Charlie Austin powered a low strike just wide after the break as Saints lacked the cutting edge to score the goal their play deserved.
Inter, who had lost their past three games, rarely threatened before Antonio Candreva lashed a shot into the top corner.
Marcelo Brozovic’s late dismissal for two bookings gave Southampton renewed hope, with both Virgil van Dijk and Austin denied from point-blank range.
But the visitors could not find an equaliser as they slipped to their first defeat in the Europa League this season.
Just how did Southampton lose that?
Southampton, who had around 7,000 vociferous fans at the San Siro for their first match against an Italian team, will be left wondering how they lost this match.
Even though manager Claude Puel had made six changes from Sunday’s win over Burnley, the visitors played the more eye-catching football only for their finishing to let them down.
There was plenty to enjoy in Saints’ build-up play, including marauding 21-year-old left-back Sam McQueen, who looked like a seasoned campaigner despite making his first start for the club.
However, Jay Rodriguez, Ward-Prowse, Martina, Austin – who came on for the injured Shane Long – and Van Dijk were all guilty of not being clinical enough in front of goal.
Rodriguez thought he had scored when he headed in but the referee had blown for a foul as players jostled in the area to meet a cross.
Van Dijk and Austin had the best chances but, in the closing stages, the former sidefooted a shot too close to keeper Samir Handanovic and had a header cleared off the line, while Austin’s close range effort was brilliantly blocked by the Inter stopper.