Stade Francais (6) 24
Tries: Leguizamon, Gasnier Pens: Beauxis (4) Con: Beauxis
Ulster (8) 19
Tries: Steinmetz, Brady Pens: O'Connor, Schifcofske (2)
Paul Steinmetz surges through to claim Ulster's first-half try in Paris
Ulster missed out on claiming their first Heineken Cup win in France as the late introduction of Stade Francais' big guns made the difference.
The visitors dominated the first half but led only 8-6 at the break, with Paul Steinmetz notching the Ulster try.
Clinton Schifcofske's penalty extended the lead but Juan Manuel Leguizamon's try helped Stade move 17-11 ahead.
A Schifcofske penalty gave Ulster hope but Mark Gasnier's try sealed the home win despite Nigel Brady's late score.
With both teams' chances of qualifying for the quarter-finals already extinguished, only a second-placed finish in Pool Four was at stake.
Immediate Ulster pressure yielded an early penalty but Niall O'Connor pushed the effort just wide.
Ulster continued to throw the ball around and Paul Marshall thought he had notched a try in the 10th minute but the television match official judged otherwise.
However, Ulster's domination was eventually rewarded by O'Connor's 16th-minute penalty as Matt Williams' young side continued to impress.
Chris Henry and BJ Botha then produced brilliant breaks in quick succession but the Stade defence managed to repel the danger on both occasions.
Stade's first attack didn't come until the 35th minute when Mathieu Bastareaud failed to take a great try-scoring chance.
However, Ulster indiscipline gifted two penalties to Stade and Lionel Beauxis landed both kicks to give the home side an undeserved lead.
But Ulster regrouped in the best possible fashion with yet another line-break finally finished off by Steinmetz's try.
O'Connor should have added to the 8-6 advantage but he missed the easy conversion to leave Ulster only two ahead at the interval.
Not surprisingly, Schifcofske assumed the Ulster kicking duties after the break and his penalty edged the visitors five ahead.
BJ Botha is tackled by Noel Oelschig and Laurent Sempere
At that point, Stade introduced their captain Sergio Parisse and hooker Dimitri Szarzewski from the bench and the changes soon had the desired effect.
Referee Wayne Barnes' controversial decision to penalise Ulster for a collapsed scrum gifted three more points to Beauxis.
Stade then exploited dreadful Ulster defending to notch a try with Schifcofske's missed tackle enabling Leguizamon to touch down.
Beauxis missed the conversion but he was on target with a penalty soon after to extend Stade's lead to 17-11.
Schifcofske's penalty cut the margin to three points after renewed Ulster pressure but the game was up for the visitors when Gasnier brushed aside Andrew Trimble to notch another Stade try.
At 24-14 adrift, Ulster bravely kept battling and slick handling in injury-time enabled Brady to notch his side's second try.
O'Connor missed with a drop-kicked conversion, the final action of the match.
Ulster coach Matt Williams:
"I must say how happy I am with the guys in terms of effort and courage.
"We came here with a plan to run the ball, and I thought our offloading and running in the first half was magnificent.
"We made break after break but we didn't take those chances and we missed our kicks.
"But I am loathe to criticise the players because they gave their all, and there is nothing left in that dressing room.
"We dominated the game and the better team lost, but at the end of the day the scoreboard says we lost."
Stade Francais: Bousses, Camara, Bastareaud, Gasnier, Arias, Beauxis, Oelschig, Leguizamon, Rabadan, M Bergamasco, Taylor, Watchou, Montanella, Sempere, Marconnet.
Replacements: Jeanjean for Bousses (63), M Bergamasco for Arias (76), Albouy for Oelschig (47), Parisse for M Bergamasco (59), Attoub for Montanella (47), Szarzewski for Sempere (47).
Not Used: Vigouroux.
Ulster: Schifcofske, Trimble, Steinmetz, Whitten, Danielli, O'Connor, Marshall, Young, Brady, Botha, O'Donoghue, Caldwell, McCullough, Pollock, Henry.
Replacements: McCrea for Danielli (76), Boss for Marshall (47), Court for Young (52), Philpott for Botha (73), Faloon for McCullough (71), Dawson for Henry (48).
Not Used: Dewey.
Referee: W Barnes (England)