The budget was passed with a majority of only eight votes - 153 to 145.
"This budget is a difficult task for a government that wants to leave its mark with social justice," Prime Minister Alexis Tsipras told lawmakers.
He agreed to a batch of economic reforms in August to secure a euro zone bailout of up to €86bn ($93bn; £62bn).
His leftist-led government has been under pressure to deliver tangible benefits to its poorest citizens since the agreement.
The budget makes €5.7bn in public spending cuts including €1.8bn from pensions and €500m from defence. It also includes tax increases of just over €2bn.
Despite the cuts, the budget will still have a greater deficit than the 2015 budget.
Earlier this year Greece reluctantly agreed to the strict conditions of its third international bailout in five years.
After losing his majority in August as a result, Mr Tsipras called an election and was returned to power in September with 35% of the vote.
Representatives of the euro zone, the European Central Bank and the International Monetary Fund return to Greece on Monday for more talks about pending reforms of the pension and tax systems and public administration.
The euro zone has also held out to Greece the possibility of long-term debt relief after a review of progress under the new bailout.
However, it has said that relief would come in the form of longer delays before repayments start or finish, not a reduction - or so-called "haircut" - in the amount that has to be repaid.
Greece's parliament has narrowly approved the 2016 budget that includes sharp spending cuts and some tax increases amid economic recession.