Brian Ashton's struggling Guinness Premiership side trailed Bourgoin 6-3 at half-time, but tries from Walshe and backrower Michael Lipman took the English side into a lead they never relinquished.
Bath's 13-point victory is the first time a visiting side have won at Stade Pierre Rajon this season.
The win guarantees them a spot in the European Cup quarter-finals, whatever happens in the match between Leinster and Glasgow in Dublin.
But Bath know a win over the Brian O'Driscoll-led Leinster side at the Recreation Ground next weekend will ensure a home play-off match.
Ulster's already slim hopes of European Cup qualification evaporated against Biarritz who look good to secure a home quarter-final after ending the home side's run of 14 unbeaten games at Ravenhill which stretched back to 2001.
The defeat - Ulster have failed to make the quarter-finals since they won the competition in 1999 - came after David Humphreys managed to become the fifth player in Heineken Cup history to pass 500 points, but Ulster can have little complaint as they failed to take their chances.
Biarritz, who were able to score two tries from Ulster turnovers, looked good for their fourth pool win and had the luxury of bringing on Serge Betsen after they had taken the game beyond Ulster in an eight minute period of the second half.
Sereli Bobo and Petru Balan did the damage for the visitors, while Dimitri Yachvili struck three penalties and a conversion in the 24-8 victory after Rory Best's try had given Ulster the lead.
Munster's hopes of finishing top of Pool One were boosted with a 46-9 win at Castres.
Marcus Horan and Shaun Payne both crossed early in the first half before the visitors conceded sloppy tries late in the first 40 minutes.
But Paul O'Connell and Tomas O'Leary scored two each in the second half, with John Kelly also going over, to help Munster record a comfortable victory - and an all-important bonus point ahead of the crunch clash with group leaders Sale.