Leipzig had missed a string of chances in a strong second half but struggled to score, with Rangers keeper Allan McGregor coming to the rescue on several occasions.
- Don't have ESPN? Get instant access
The keeper was beaten, however, in the 85th when the Spanish midfielder thundered in a volley from 18 metres after Rangers had cleared a corner.
"It was one of those games where we had to dig deep, they had a clear game plan and made life hard but we got the result we wanted," said Leipzig midfielder Tyler Adams.
"We know it's only half-time in tie and we need to maintain our focus and performance for the return leg. We've been to a few cup finals before, but getting to a European cup final would be something special."
There was very little goalmouth action in a lacklustre first half, which did not feature a single shot on target for either team.
Despite Leipzig missing several defenders through suspension, Rangers struggled to break into the Germans' box and had to wait until three minutes after the restart for their first chance through Ryan Kent's low shot that flew wide.
Leipzig quickly upped the tempo and responded with Christopher Nkunku's thundering shot that was blocked by McGregor.
The Frenchman spurned a golden chance in the 70th when he rounded the keeper but lost his balance to send his shot high. He then headed over the bar from close range minutes later before McGregor pulled off another good save to tip an Adams effort over the bar.
The visitors could do nothing when Angelino connected perfectly with the ball from just outside to fire in the winner and give his team the advantage going into next week's second leg in Glasgow.
"It's always disappointing when you lose a goal so late in the game, but it's a 1-0 defeat," said Rangers coach Giovanni van Bronckhorst.
"The players did well and we know what we have to do next week. We play at home and the crowd at Ibrox will give us the energy we need."