Irish fly-half Gareth Steenson who missed last week's defeat to Montpellier, kicked 19 points which proved to be the difference between the two sides.
Steenson slotted to early penalties to give the visitors the lead before Bourgoin No8 Yan Labrit rumbled over on nine minutes but Steenson hit back almost immediately with a third kick.
Centre Rennie crossed on 23 minutes to open breathing space before a moment of opportunism from Thomas saw Exeter take a grip on the game.
The scrum-half pounced when the ball squirted out of a Bourgoin scrum and galloped over from 30 metres out. Steenson converted and added a penalty before half-time.
Brando Va'aula spearheaded the anticipated backlash from the home side but wing Foster skipped over to safeguard's Exeter's lead.
Fit-again Richard Baxter marred his first start of the season following injury with a yellow card just moments after Ratu Nasiganiyavi was sent to the sin bin. The Fijian returned to score in the final minute but that was too late to deny Exeter.
Connacht got their Pool One campaign back on track and did Harlequins a favour at the same time by beating Bayonne 16-13 in Galway.
Sean Cronin and Gavin Duffy scored in either half but a try from replacement hooker David Roumieu, converted by Jean-Baptiste Peyras, set up a nail-biting climax at the Sportsground.