Zelenskyy reversed course after the outcry in the hope of bringing to an end the largest political crisis of his presidency so far.
MPs voted 331 to 0 in favour of the new bill in Kyiv’s 450-seat legislature to restore their political independence.
The debate itself was tense, with MPs shouting at each other and two briefly throwing punches before others broke up the tussle.
Zelenskyy and his powerful chief of staff, Andriy Yermak, had claimed last week that they rushed through the original bill to counter Russian interference.
However, critics alleged the step had been designed to protect his political allies from prosecution.
Eradicating graft and shoring up the rule of law are key requirements for Kyiv to join the EU, which Ukrainians see as critical to their future as they fend off a Russian invasion.
Around 70 MPs from Zelenskyy’s ruling party had expressed doubt over the fresh bill over fears of “revenge” from the anti-corruption agencies.
Demonstrators had gathered outside the Parliament again today, demanding that MPs pass the bill and shouting “shame!” at those who originally backed it.
Zelenskyy later told Ukrainians that it was the “right decision” as it is “very important that the state listens to public opinion. That it hears its citizens”.