Batshuayi took his tally to 13 goals in his last 13 international appearances with the double, which maintained Belgium’s four-year unbeaten run at home.
After 12 minutes, Belgian defender Sebastiaan Bornauw’s attempt at a clearing header served only to set up Mehmedi to hammer the ball home.
Four minutes into the second half, Belgium equalised after a Swiss pass was snapped up by Youri Tielemans, who quickly played it into Batshuayi who turned and finished with aplomb.
He had looked offside when the pass was played to him but with no VAR, the goal stood.
The Swiss created more efforts on goal and might have restored their lead had it not been for the goalkeeping of Simon Mignolet and a timely block from Bornauw, making up for his earlier error.
Yet Belgium claimed the win when Dodi Lukebakio set up a chance from the left, which was played back into the centre by debutant Thomas Foket for Batshuayi, who was given space to thump the ball home from right in front of goal.
The match was a first for Belgium at Leuven’s Den Dreef stadium, where they will host England on Sunday and Denmark next Wednesday. The match was moved from Brussels because of a curfew imposed as part of the Covid-19 lockdown in Belgium.