The World Championship leader beat Hamilton by just 0.097s as Mercedes resumed their dominance following F1's summer break.
Fernando Alonso was third for Ferrari, 0.2s shy of Rosberg, ahead of fellow veterans Jenson Button and Kimi Raikkonen. Sergio Perez was a strong sixth for Force India, followed by Kevin Magnussen and Nico Hulkenberg.
Andre Lotterer made his first appearance in the Caterham having replaced Kamui Kobayashi at the team. The German, who will become the oldest F1 debutant since 1995 this weekend, was 21st fastest, ahead of team-mate Marcus Ericsson.
Meanwhile Alexander Rossi drove in the session for Marussia but will not make his grand prix debut for the team, as announced yesterday. Regular driver Max Chilton has settled his "contractual issues" - believed to be the non-payment of funds by his sponsors - and will return to the car for FP2.
Belgian Grand Prix - FP1 Top-10
- Nico Rosberg (Mercedes)
- Lewis Hamilton (Mercedes)
- Fernando Alonso (Ferrari)
- Jenson Button (McLaren-Mercedes)
- Kimi Raikkonen (Ferrari)
- Sergio Perez (Force India-Mercedes)
- Kevin Magnussen (McLaren-Mercedes)
- Nico Hulkenberg (Force India-Mercedes)
- Daniel Ricciardo (Red Bull-Renault)
- Valtteri Bottas (Williams-Mercedes)