Hakan Calhanoglu’s strike in first-half stoppage time gave Inter victory.
Barca thought they had rescued a point when Pedri scored in the second half, but it was ruled out by video assistant referee for an Ansu Fati handball.
Defeat leaves Barcelona third in Group C, three points behind Inter.
It was a night of controversy at the San Siro from VAR decisions, the most notable incident coming when Pedri appeared to have equalised on 67 minutes after Cameroon keeper Andre Onana came through a crowd of players and palmed a cross straight to him, allowing the 19-year-old to finish.
However, Fati had his hand raised and the ball was pushed into his fingers at point-blank range as he put Onana under pressure. The goal was ruled out via VAR, and Barcelona manager Xavi was booked for complaining to the referee.
“The referee should be out here explaining why he makes these decisions, if he made mistakes or not. That would humanise them a lot more,” said Xavi.
“Today I’m really unhappy. I feel there is real injustice.”
Before the match, it was Xavi’s Inter counterpart Simone Inzaghi who was under pressure. His team are ninth in Serie A after losing four of their eight league games this season.
He had the additional headache of facing in-form Robert Lewandowski, who had scored nine goals in his past seven games for Barca, although he had never netted at the San Siro.
It is a barren run that continued for Lewandowski as he endured a quiet night in Milan, while Inzaghi celebrated a key win that puts Inter in the driving seat for a place in the knockout stage.
‘We have three more finals to come’
Xavi said he was “offended” by the refereeing decisions
The first VAR flashpoint occurred on 24 minutes – Eric Garcia clearly handled the ball in the area and a penalty appeared certain to be given after video review. However, a marginal offside was spotted in the build-up and Barca escaped.
An evenly matched game was then decided by Calhanoglu’s goal in first-half added time, his low and well-struck 25-yard strike from a central position skidding across the turf past Ter Stegen for the midfielder’s first Champions League goal in five years.
Barcelona offered very little until the hour mark, when Dembele struck the post with a powerful effort from the left after good team build-up. A few minutes later Pedri had the ball in the net – but VAR intervened.
They could not break through thereafter, despite the latter stages being played in Inter’s half, with echoes of their most famous meeting in 2010 when a Jose Mourinho masterclass saw his Milan side reach the final on their way to the Treble.
There was time for one last VAR incident when Denzel Dumfries appeared to handle in the area. However it was ruled he had not conclusively knocked a cross away from Fati with his wrist.
Xavi knows the return fixture with Inter at Camp Nou in eight days’ time will most likely be decisive for their European hopes this season.
“We have three more finals to come,” he said. “This is a game we have lost, but now we have two games at home from the three and they are real finals.
“We have to show more intensity. The first half wasn’t good, we have to be self critical – but of course we are offended today.”