She told MPs 95% of the terms of exit were agreed but the Irish border was still a “considerable sticking point”.
While willing to consider extending the UK’s transition period beyond 2020, she said this was “undesirable” and would have to end “well before” May 2022.
Labour’s Jeremy Corbyn said the Tories were “terminally incompetent and hamstrung by their own divisions”.
And the European Parliament Brexit’s co-ordinator Guy Verhofstadt has said the withdrawal agreement was 90% complete, rather than the figure of 95% given by Theresa May.
The Irish border remained the biggest stumbling block, he told a committee in Strasbourg, but he was confident a deal could be agreed before the EU summit in December.
The UK is to leave the EU on 29 March 2019 but hopes of reaching agreement on the terms of its exit by the end of the year have been held up by a lack of a solution to the Irish border issue.
At last week’s EU summit, European leaders refused to sign off plans for a special Brexit meeting in November to seal the withdrawal agreement, saying insufficient progress had been made.
But updating MPs, Theresa May insisted the process was moving in the right direction, with the future status of Gibraltar and the UK’s RAF bases in Cyprus having been settled in recent days.
“Taking all of this together, 95% of the Withdrawal Agreement and its protocols are now settled.”
She urged the EU to do more to ensure commitments entered into by both sides to avoid a hard border between Northern Ireland and the Republic of Ireland were honoured by whatever means necessary.
One idea is to extend the transition period, currently due to end on 31 December 2020, to give the two sides more time to agree their future economic partnership and ensure controversial contingency plans, the so-called Irish backstop, do not ever come into force.
Both Tory Brexiteers and Remainers worry this would delay further the moment of the UK’s proper departure from the EU, and potentially cost billions in terms of extra payments.
But Theresa May told MPs that protecting the UK’s integrity was so important that she had a duty to explore “every possible solution” to keeping the Irish border open and ensuring no new barriers between Northern Ireland and the rest of the UK.
She said the UK should be able to make a “sovereign choice” in December 2020 between extending the transition period for a short period or invoking the backstop – which would see the whole of the UK stay in a temporary, time-limited customs arrangement with the EU.
She suggested the transition option might be preferable as it would “mean only one set of changes for businesses at the point we move to the future relationship”.
“But in any such scenario we would have to be out of this implementation period well before the end of this parliament,” she added.
Urging Tory MPs to hold their nerve during the toughest part of the negotiations, she rejected calls for another referendum and said reports that civil servants were planning for such an eventuality were untrue.
She said she would not be listening to those who wanted to “stop Brexit” through a new referendum – which she said should be called a “politicians’ vote” rather than a “people’s vote”.
She explained that people had had their vote, in the 2016 referendum, and a repeat would be a case of politicians telling them to have another go.
But one of her party’s MPs, Sarah Wollaston, said the only “politicians’ vote” would be if they found a way to ignore the views of the people who took part in the People’s Vote march past Downing Street to call for a new referendum.
A weekend of feverish speculation suggested Theresa May had 72 hours to save her job ahead of a meeting of the 1922 committee of backbench MPs on Wednesday.
During more than three hours of Brexit questions in the Commons, Tory MPs condemned the anonymous briefing against the PM over the weekend, which suggested she faced being “knifed” by her party, but expressed frustrations about government concessions.
John Whittingdale said Leave voters were being asked to wait more than four years after the 2016 Brexit vote to regain full control of their laws and money.
And former cabinet minister John Redwood said staying in the EU’s customs union up to the end of 2021 could cost the UK between £15bn and £20bn at a time when resources were “desperately needed” for domestic priorities such as the NHS, schools and Universal Credit.
He told MPs it would be “an act of great rashness” to a financial settlement which amounted to a “surrender document which we cannot afford”.
In a separate statement, Brexit Secretary Dominic Raab said the “meaningful vote” on the final Brexit deal could not be allowed to prevent or delay the UK’s departure from the EU.
The choice MPs faced, he said, was between the “best deal” negotiated by the government and a no-deal alternative, adding he was “very sure that will focus minds”.
But Labour said it would not support this while former Tory education secretary Nicky Morgan questioned what legal advice ministers had received to support its position.