Multiple videos show the vehicle swerving off one of the Russian capital's busiest roads at speed as panicked passers-by scatter.
It collapses down a wide set of steps leading to a subway before being stopped by the tunnel's roof.
It is not clear what caused the crash but Russian media said the driver had been detained after he lost control of the vehicle.
Passengers on-board and people walking on the steps near the Slavyansky Boulevard metro station were killed, police said.
Traffic spokesperson Artyom Kolesnikov confirmed: "A bus drove into a pedestrian underpass.
"According to preliminary information, five people died."
Moscow mayor Sergei Sobyanin tweeted: "There are dead and wounded. We are providing emergency aid."
25 December is an ordinary working day in Russia, as Orthodox Christmas is not celebrated until 7 January.