Ulster put themselves right back in the hunt for a quarter-final place in this year's European Champions Cup with a deserved win at The Stoop over the Aviva Premiership side.
Les Kiss's side moved second in Pool One, two points ahead of Wasps who were beaten in France by La Rochelle, although the English side did pick up a try scoring bonus point.
The French side made it three wins from three - and again took maximum points - as they defeated Wasps 49-29 and Ulster can put themselves in a strong position to take the runners-up spot in the group with a win at home against Harlequins on Friday night at Kingspan Stadium.
Conditions were appalling for both sides with snow constantly falling during the first half - and grounds staff had to brush the lines mid way through.
Ulster were the better of the two sides in that first half, playing with composure and patience.
The game was riddled with errors, not surprisingly given the conditions.
Ulster scrumhalf John Cooney opened the scoring with a penalty after six minutes for Ulster, rewarding the efforts of the pack for some pressure.
He missed a second attempt on 19 minutes but Ulster were rewarded for their efforts on 25 minutes when Irish international winger Jacob Stockdale finished off a lively move involving forwards and backs. Cooney's touchline conversion was side.
Harlequins pressed at the end of the half, but Ulster's defence was on top giving them an 8-0 advantage going into the break.
The snow stopped over the break, but there was no let-up from Harlequins as they pummelled the Ulster line - eventually prop Kyle Sinckler going over in the corner for an unconverted try, outhalf Marcus Smith missing the difficult conversion - he had also missed a penalty on the 32nd minute.
Ulster kept their composure and were back in the ascendency wit Cooney making the advantage six points with a penalty on the hour mark - although a try opportunity did go abegging minutes before when Charles Piutau was unable to hold a pass from replacement Louis Ludik.
Cooney made it 14-5 with another penalty, his third success from five on the day as the game went into the final 10 minutes.
Ulster again had to have their wits about them as Quins put them under pressure on their own line - but as it had been for most of the afternoon, the close range defence stood firm, Cooney clearing the threat.
Heineken man of the match Cooney confirmed the Ulster win a minute from the end with another penalty.
Harlequins: Mike Brown (c); Charlie Walker, Alofa Alofa, Jamie Roberts, Tim Visser; Marcus Smith, Danny Care; Joe Marler, Elia Elia, Kyle Sinckler, George Merrick, Charlie Matthews, Renaldo Bothma, Chris Robshaw, Mat Luamanu
Replacements: Dave Ward, Lewis Boyce, Phil Swainston, Dino Lamb, Archie White, Ian Prior, Winston Stanley, Ross Chisholm
Ulster Rugby: Charles Piutau; Craig Gilroy, Tommy Bowe, Stuart McCloskey, Jacob Stockdale; Christian Lealiifano, John Cooney; Callum Black, Rob Herring, Wiehahn Herbst, Alan O'Connor, Kieran Treadwell, Iain Henderson (c), Sean Reidy, Nick Timoney
Replacements: John Andrew, Andy Warwick, Ross Kane, Matt Rea, Chris Henry, Paul Marshall, Peter Nelson, Louis Ludik