The budget had been in jeopardy after both Poland and Hungary threatened to veto it over attempts to tie the release of EU funds to adherence to core EU values.
The European Parliament has passed its seven-year EU budget by an overwhelming majority, paving the way for the EU to pursue key programs in the coming years.
The €1.8 trillion budget and coronavirus recovery package was agreed by the European Council earlier this month, and was passed in the EP on Wednesday evening with 548 votes in favour, 81 against and 66 abstentions.
It includes a €15 billion top-up for 10 programmes, which it said will boost the fight against coronavirus, provide opportunities for the next generation, and protect European values.
The EP president, David Sassoli, called it a "historic budget for a historic moment," which lays the foundations for a "greener and fairer Europe".
The road to getting the budget passed was dogged by issues related to Hungary and Poland, who threatened to veto it due to opposition to a mechanism that would make some funds conditional on a member state's respect for core European values.
But a compromise was reached, with the mechanism suspended while the EU draws up plans for how it could be used.
"The last weeks, we have seen a sad show of obstructions by the governments of Hungary and Poland, who wanted to take the recovery fund hostage for their own anti democratic agenda," said Ska Keller, a German Green MEP.
"Mr Orbán and Mr Kacziynksi, you neither serve your citizens, nor our common European future," she added.
Once operational, the EU will be able to cut funds to countries in cases of systemic breaches of rule of law.
The two countries have long been at odds with the EU over issues such as rule of law and judicial independence.