Ulster (13) 23
Tries: Brady, Danielli Pens: Humphreys 3 Cons: Humphreys 2
Stade Francais (6) 13
Try: Arias Pens: Beauxis 2 Con: Oelschig
Nigel Brady runs in for Ulster's first-half try at Ravenhill
Ulster remain in strong contention for a place in the Heineken Cup knockout stage after they brushed aside French giants Stade Francais at Ravenhill.
Ian Humphreys' run set up Nigel Brady's try as Ulster led 13-6 at the break with the fly-half pulling the strings.
Tempers flared before the break but Ulster kept their cool in the second half as Stephen Ferris' charge set up Simon Danielli to score a decisive try.
Julien Arias notched a late Stade try but a bonus point eluded the visitors.
The match was a niggly affair and Stade scrum-half Julien Dupuy could be in disciplinary trouble after appearing to make deliberate contact with Ferris' eye regions late in the contest.
Dupuy was also sin-binned early in the second half and there were a number of other skirmishes Ulster replacement Bryan Young and Stade's David Attoub were handed yellow cards in the closing stages.
Ulster showed their intent in the early stages and Stade full-back Hugo Southwell had to make a try-saving intervention to deny Humphreys after Danielli's clever kick infield.
Humphreys hit the woodwork with Ulster's first penalty chance but he made no mistake four minutes later after Stade skipper Rodrigo Roncero's infringement at a scrum.
Lionel Beauxis levelled for Stade with a long-range penalty on 17 minutes but the parity was short-lived as Humphreys produced a moment of magic.
The Ulster fly-half caught a long clearance on the edge of his own 22 and after charging into Stade territory, exchanges passes with Danielli before setting up Brady for an easy finish.
Tom Court, Nigel Brady and Clinton Schifcofske celebrate Ulster's victory
Humphreys' conversion extended Ulster's lead to 10-3 and while Beauxis replied with a Stade penalty, another three points by the home number 10 put the Irish province 13-6 ahead at the break.
The first half concluded with both packs squaring up to each other after a botched Stade line-out.
Ulster continued to produce all the pressure after the break and things then went from bad to worse for the visitors after Dupuy was yellow carded for an off-the-ball push on Ferris.
The home side made the man advantage pay within three minutes as Ferris charged into Stade territory before releasing Danielli to score.
The impeccable Humphreys added the conversion and Ulster's lead was 17 points.
Stade desperately chased a bonus point in the closing 20 minutes but the Ulster defence largely held firm.
However, replacement winger Julien Arias did finally breach the home defence with six minutes to go and Noel Oelschig conversion left only 10 between the teams.
Replacement fly-half Oelschig had a late long-range chance to earn Stade an undeserved bonus point but he was just off-target.
Ulster's win inflicted a first Heineken Cup defeat of the campaign on Stade and throws qualification from Pool Four potentially wide open ahead of next weekend's return game in Brussels.
Ulster's Stephen Ferris on the incident involving Julien Dupuy
"I was at the bottom of it (a ruck) getting my eyes tugged at a good bit.
"It's disappointing because I thought it was being cut out of the game.
"I wouldn't like to get anybody cited at all but it still seems to be in the French game and it has to be cut out."
Ulster coach Brian McLaughlin
"It wasn't the perfect performance by any means but by goodness it was a great one.
"If you're going to play Stade here then you've got to hassle them and we did that very, very well. Whenever they had the ball we forced the error.
"We didn't collapse in the last 10 minutes and let them get a bonus point which I think could be crucial for us in the end.
Stade Francais player James Haskell
"It's not panic stations yet.
"We can re-focus and go again. It doesn't matter where we play, we just have to turn up in Brussels and come out with all guns blazing.
"It wasn't a good performance at all for us, but we have the ability to turn things round."
Ulster: Schifcofske, Trimble, Cave, Whitten, Danielli, Humphreys, Boss, Court, Brady, D. Fitzpatrick, O'Donoghue, Tuohy, Ferris, Pollock, Henry. Replacements: Smith for Cave (76), O'Connor for Humphreys (71), Kyriacou for Brady (69), Young for D. Fitzpatrick (64), J Fitzpatrick for Ferris (77), Faloon for Pollock (64).
Not Used: Caldwell, P Marshall.
Stade Français: Southwell, Gasnier, Bastareaud, Messina, Phillips, Beauxis, Dupuy, Roncero, Kayser, Marconnet, Marchois, Pape, Haskell, Burban, Rabadan. Replacements: Arias for Southwell (64), Bousses for Messina (51), Oelschig for Beauxis (47), Szarzewski for Kayser (49), Attoub for Marconnet (50), Vigouroux for Pape (70), Mauro Bergamasco for Burban (41), Slimani for Mauro Bergamasco (76).
Referee: D Pearson (England).