On Formula One's return to action at Spa-Francorchamps following the sport's four-week summer break, Bottas edged out Red Bull's Max Verstappen by 0.164 seconds.
Hamilton, who leads Verstappen by eight points in his bid for a record-breaking eighth world championship, ended the running three seconds of the pace after he was forced to abort his fastest lap following a close call with Williams driver Nicholas Latifi.
Hamilton, who had just posted the fastest second sector of the one-hour session, approached the back of Latifi's Williams on the 200mph drag to the Bus Stop chicane.
But Latifi was caught unawares and, as Hamilton moved to his left to pass the Canadian, so did Latifi, forcing Hamilton to slam on the anchors to avoid a high-speed collision.
Hamilton's team-mate Bottas stole the early advantage for Mercedes by lapping the 4.34-mile circuit – the longest track on the calendar – faster than anybody else.
Rain threatened to disrupt the first action on Friday but, after a light shower, the drivers were able to run on slicks.
The rain then arrived again as the chequered flag fell with Spa's infamous changeable conditions forecast for the remainder of the weekend.
Alpha Tauri's Pierre Gasly finished third, half-a-second back, with the two Ferrari drivers, Charles Leclerc and Carlos Sainz, fourth and fifth.
British driver Lando Norris, an impressive third in the standings after the opening 11 rounds, finished eighth for McLaren, 1.1 sec down.
Kimi Raikkonen spun at La Source and then was left red-faced as he banged the wall on his entry to the pits in a practice to forget for F1's most-capped driver.
The concluding action of the day begins at 2.30pm.