A converted try and drop goal in the final 12 minutes saw Ulster's chances of a losing bonus point dashed in Biarritz on Saturday.
HEINEKEN CUP: POOL 4: Saturday, October 29
Biarritz Olympique 33 Ulster 19, Parc des Sports Aquilera (Att: 6,000)
Scorers: Biarritz: Tries: Petru Vladimir Balan, Philippe Bidabe 2, Jean-Baptiste Gobelet; Cons: Dimitri Yachvili 2; Pens: Yachvili 2; Drop: Julien Peyrelongue
Ulster: Tries: Neil Best, Simon Best; Pens: David Humphreys 3
Ulster sit second in Pool Four after suffering their first defeat of the European campaign. Mark McCall's side are three points behind leaders Saracens ahead of next month's back-to-back fixtures against the Guinness Premiership side.
Ulster forwards Neil Best and Simon Best, who are both currently in the Ireland squad for next week's autumn Test against the All Blacks, scored a try apiece but it was not enough to clinch a shock victory at the home of the French champions.
The pair of forwards both scored from driving lineouts either side of half-time as Ulster recovered from a disastrous start to threaten a genuine shock. Biarritz prop Petru Vladimir Balan and winger Philippe Bidabe (2) bagged three tries between them in the opening quarter-of-an-hour to totally blitz the province.
Neil Best's effort on 18 minutes, incredibly his sixth try in eight games, coupled with two first half penalties from the boot of David Humphreys kept Ulster in the hunt at 20-11 down at half-time.
On 59 minutes, Ulster captain Simon Best helped close that gap even further as he pounced from a lineout drive to score. Ulster maintain the gap at 23-19 as Humphreys and Dimitri Yachvili exchanged penalties.
However, Biarritz's attack was just too much for McCall's men to handle and winger Jean-Baptiste Gobelet made the most of a fortunate bounce on 73 minutes to score the home side's bonus point try.
Yachvili converted and Julien Peyrelongue's injury-time drop goal put last season's beaten semi-finalists out of sight.
BIARRITZ: Nicolas Brusque; Philippe Bidabe, Frederico Martin Arramburu, Denis Lison, Jean-Baptiste Gobelet; Julien Peyrelongue, Dimitri Yachvili; Petru Vladimir Balan, Benoit August, Kasiano Lealamanua, Jerome Thion, David Couzinet, Steve Malonga, Imanol Harinordoquy, Thomas Lievremont (capt).
Replacements used: Sereli Bobo for Martin Arramburu (71 mins), Manuel Carizza for Malonga (73), Benjamin Noirot for August (79), Sebastien Ormaechea for Lealamanua (80), Lealamanua for Balan (80+5). Not used: Ockert Booyse, Julien Dupuy, Benjamin Dambielle.
ULSTER: Bryn Cunningham; Tommy Bowe, Kevin Maggs, Andrew Trimble, James Topping; David Humphreys, Kieran Campbell; Justin Fitzpatrick, Rory Best, Simon Best (capt), Justin Harrison, Matt McCullough, Neil Best, Neil McMillan, Roger Wilson.
Replacements used: Paul Steinmetz for Topping (47 mins), Bryan Young for Fitzpatrick (71), Campbell Feather for McMillan (80+5). Not used: Nigel Brady, Ryan Caldwell, Reece Spee, Paddy Wallace.
Referee: Nigel Whitehouse (Wales)