Romelu Lukaku's 50th international goal broke the deadlock in Brussels on Friday (AEDT), and the striker set up Nacer Chadli for the second before Cristian Brolli's own goal made it 3-0.
Lukaku struck again, Andrea Grandoni deflected in Toby Alderweireld's shot and Youri Tielemans scored ahead of the interval, after which Roberto Martinez's side took their foot off the gas.
Christian Benteke, Yari Verschaeren and Timothy Castagne wrapped up the scoring and, with seven wins out of seven in Group I, Belgium are guaranteed to finish in the top two and can look forward to the European Championship.
Despite dominating, it took Belgium until the 28th minute to open the scoring, goalkeeper Simone Benedettini having had little to do amid a flurry of off-target efforts.
But when San Marino lost the ball in their own half, Lukaku and Tielemans swapped passes, with the Inter striker rifling in a powerful finish at the near post.
Benedettini was soon beaten twice again, Eden Hazard and Lukaku combining to set up Chadli for a curling 20-yard finish before Brolli unfortunately scored into his own goal.
A deflected drive from Lukaku and Grandoni's own goal from Alderweireld's shot preceded a fine strike from Tielemans that made it 6-0 before half-time as San Marino's early defensive resilience crumbled.
Dries Mertens hit the post on the hour mark as the tempo slowed to walking pace and Lukaku missed chances to claim the match ball before his substitution.
Lukaku's replacement Benteke struck with a shot from the edge of the box that deceived the luckless Benedettini before 18-year-old Verschaeren converted a penalty he won himself to score his first international goal.
Castagne smashed home a late ninth for the hosts, but San Marino were at least able to avoid conceding double figures as Benedettini denied Benteke in added time.