Another triumph next week against Castres will secure a home quarter-final for Mark Anscombe's side.
A first-half try from Nick Williams along with late second-half scores by Jared Payne and Darren Cave secured the four points and with Northampton beating Castres, Ulster progressed after a scrappy game played in difficult conditions at Ravenhill.
The match left the injury-hit Warriors -- who were unable to have two prop replacements on their bench -- without a win in a miserable season in Europe.
Ravenhill was packed to the rafters for this encounter, which saw the home side open the scoring after six minutes when Ruan Pienaar slotted a penalty after Moray Low was off his feet at the breakdown.
Things got even better after 20 minutes, when Nick Williams turned a ball over in Glasgow's 22 which saw Paddy Jackson put a teasing ball in for Andrew Trimble -- making his 150th appearance, only for the Warriors to clear to touch near their line.
The reprieve proved temporary though, as from the lineout, which Williams secured, Ulster drove for the line and Williams careered through Robert Hartley to score with the TMO being asked to call on it. Pienaar converted and Ulster were 10-0 to the good.
The half ended with Ulster leading 10-0 with Trimble just failing to hold on to an intercept pass at the whistle.
The Warriors began the second half with Weir finally getting them off the mark after 48 minutes when Pienaar was sacked at a ruck.
Matters then took a turn for the worse for Ulster when Iain Henderson was yellow carded for not rolling away and the home side were down to 14 men on 54 minutes. The Warriors quickly struck with Weir slotting a second penalty after Ulster were caught offside.
But Ulster dug deep and a drive from Williams and Trimble helped set up Pienaar to make it 13-6 just as Henderson returned.
Ulster then sealed the tie when Payne crashed over in the 73rd minute after good approach work from Henderson.
Pienaar's conversion rebounded off the post but Ulster were not finished and Cave slid over for a third unconverted try with time running out.