Mr Vizcarra said he would accept the vote, not take any legal action, and leave the presidential palace.
Manuel Merino, the speaker of Congress, is expected to assume the presidency until July 2021 - when Mr Vizcarra's term was due to end.
It is the second attempt over the last two months to oust the president.
Mr Vizcarra, 57, has previously denied allegations that he accepted bribes worth 2.3m soles ($640,000; £487,000) when he was governor of the southern Moquegua region.
Before the vote, he also warned that any impeachment could throw the country into turmoil as it grapples with a severe economic recession brought on by the coronavirus pandemic.
Coronavirus: What's happening in Peru?
But on Monday, 105 lawmakers voted in favour of the motion - 19 voted against it and another four abstained.
Several lawmakers sympathetic to Mr Vizcarra have spoken out against the decision.
"This is a coup in disguise. We need calm, but also a lot of citizen vigilance," said George Forsyth, a former mayor who is running in next year's presidential race.
When everything seems to be going against you, remember that the airplane takes off against the wind, not with it.