Bath led after three Rhys Priestland penalties and Semesa Rokoduguni's converted score, but Sean Dougall added to Romain Buros' earlier try to reduce Bath's advantage to two at the break.
Priestland maintained his 100% kicking record with three further penalties to put Bath 25-17 ahead after 75 minutes.
Watisoni Votu scored a late try for the hosts, but Bath held on for victory.
Bath: Homer; Rokoduguni, Joseph, Banahan, Brew, Priestland; Fotuali'i, Auterac, Dunn, Palma-Newport, Charteris, Stooke, Ellis, Mercer (c), Houston.
Replacements: Van Vuuren, Lahiff, Knight, Ewels, Garvey, Cook, Bowden, Williams.
Pau: Buros, Lestremau, Fernandez, Votu, Ratuvou, Fajardo, Daubagna, Hurou, Lespiaucq-Brettes, Tierney, Boutaty, Ramsay, Gunther, Dougall, Mowen.
Replacements: Dupouy, Pourailly, Lacrampe, Moise, L. Rey, Hamadache, Tutaia, Kueffner.
Referee: Ian Davies (Wales)
For the latest rugby union news follow @bbcrugbyunion on Twitter.
Former champions Bath began their European Challenge Cup campaign with a narrow victory over Pau in France.