The measure passed in a 94-1 vote with four abstentions in the upper house of parliament late on Monday, Poland’s PAP news agency reported.
The legislation, which was earlier backed by the lower chamber of Poland's bicameral parliament, now reverts to the lower house for a final vote after the Senate made 36 modifications to the proposal.
The plan for the mixed voting system is then expected to go to President Andrzej Duda for signing into law.
The Polish presidential vote was originally scheduled for May 10, but it failed to go ahead amid the coronavirus pandemic, which has claimed more than 1,000 lives in this country.
Parliamentary Speaker Elżbieta Witek is soon expected to announce a new date for the vote.
Poland's lower house, controlled by the ruling conservatives, last week rejected a bid to oust a senior government minister amid a standoff over the presidential ballot.
The opposition-controlled Senate in early May rejected a plan for citizens to elect the country’s president by a mail-in vote.
Poland’s conservative leader Jarosław Kaczyński said last month that the country must hold its presidential vote no later than June 28.
A total of 24,165 people have tested positive for the COVID-19 disease in Poland, with 1,074 deaths from the coronavirus so far, public health officials announced on Monday evening.