She said Britain needed certainty, stability and strong leadership following the EU referendum.
Explaining the decision, Mrs May said: "The country is coming together but Westminster is not."
Opposition leader Jeremy Corbyn said his Labour Party wanted the election, calling it a chance to get a government that puts "the majority first".
There will be a vote in the House of Commons on Wednesday to approve the election plan - the prime minister needs two thirds of MPs to vote in favour to bring forward the next scheduled election date of 2020.
Explaining her change of heart on an early election, Mrs May said: "I have concluded the only way to guarantee certainty and security for years ahead is to hold this election."
She accused Britain's other political parties of "game playing", adding that this risks "our ability to make a success of Brexit and it will cause damaging uncertainty and instability to the country".
"So we need a general election and we need one now. We have at this moment a one-off chance to get this done while the European Union agrees its negotiating position and before the detailed talks begin.
"I have only recently and reluctantly come to this conclusion. Since I became prime minister I've said there should be no election until 2020, but now I have concluded that the only way to guarantee certainty and security for the years ahead is to hold this election and seek your support for the decisions we must take."
In a statement outside Number 10, Mrs May said Labour had threatened to vote against the final Brexit agreement and cited opposition to her plans from the Scottish National Party, the Lib Dems and "unelected" members of the House of Lords.
"If we don't hold a general election now, their political game-playing will continue and the negotiations with the European Union will reach their most difficult stage in the run up to the next scheduled election," she said.
The PM challenged the opposition parties: "Let us tomorrow vote for an election - let us put forward our plans for Brexit and our alternative programmes for government and then let the people decide.
"The decision facing the country will be all about leadership. It will be a choice between strong and stable leadership in the national interest, with me as your prime minister, or weak and unstable coalition government, led by Jeremy Corbyn, propped up by the Liberal Democrats - who want to reopen the divisions of the referendum - and Nicola Sturgeon and the SNP."
Mr Corbyn said he welcomed the prime minister's decision, saying it would "give the British people the chance to vote for a government that will put the interests of the majority first", saying that this would include dealing with "the crisis" in housing, education funding and the NHS and pushing for an "economy that works for all".
He told the BBC: "I'm starting straight away and I'm looking forward to it and we'll take our message to every single part of this country... We're campaigning to win this election - that's the only question now."
Asked if he will be the next prime minister, the Labour leader said: "If we win the election - yes - and I want to lead a government that will transform this country, give real hope to everybody and above all bring about a principle of justice for everybody and economic opportunities for everybody."
Scotland's First Minister Nicola Sturgeon said she would be fighting the election "to win".
"I think the prime minister has called this election for selfish, narrow, party political interests, but she has called it and therefore I relish the prospect of getting out to stand up for Scotland's interests and values, standing up for Scotland's voice being heard and standing against the ability of a right wing Conservative Party to impose whatever policies it wants on Scotland."
In his response to Mrs May's announcement, Lib Dem leader Tim Farron tweeted: "This is your chance to change the direction of your country. If you want to avoid a disastrous hard Brexit. If you want to keep Britain in the single market. If you want a Britain that is open, tolerant and united, this is your chance.
"Only the Liberal Democrats can prevent a Conservative majority."
Mrs May spoke to the Queen on the phone on Easter Monday to let her know of the election plan, the prime minister's official spokesman said. She also got the full backing of the Cabinet before calling the election.
Former prime minister David Cameron called Theresa May's decision to hold a snap general election "brave and right". In a tweet, he added: "My very best wishes to all Conservative candidates."
British business groups gave a mixed response to the prime minister's sudden call for a general election, as the pound jumped on the news and shares fell.
European Council President Donald Tusk's spokesman said the 27 other EU states would forge ahead with Brexit saying the UK election would not change their plans.
He added: "We expect to have the Brexit guidelines adopted by the European Council on 29 April and following that the Brexit negotiating directives ready on 22 May. This will allow the EU27 to start negotiations."