Adults will be allowed to carry up to seven grams of cannabis, and grow no more than four plants at home.
But smoking it in public or in front of children will be illegal.
Several other nations have similar plans, such as Germany, Luxembourg and Switzerland. Countries like the Netherlands tolerate cannabis use in certain circumstances.
Malta’s parliament voted in favour of the reform on Tuesday afternoon, with the bill winning 36 votes in favour and 27 against.
Equality Minister, Owen Bonnici, said the “historic” move would stop small-time cannabis users from facing the criminal justice system, and would “curb drug trafficking by making sure that [users] now have a safe and regularised way from where they can obtain cannabis”.
In October, its leader Bernard Grech – who initially supported the new law – warned it would “only lead to the strengthening of the illegal market, with organised crime taking advantage,” according to The Times.
Opponents have called on Malta’s president, George Vella, not to sign it into law, which is the final, ceremonial stage.
Under the changes, anyone carrying more than seven grams, but less than 28g could be fined up to €100 (£85; $112).
The punishment for smoking in public will be a €235 fine, and those smoking cannabis in front of anyone younger than 18 could be fined up to €500.
Associations will be set up to distribute the drug or seeds to cultivate cannabis, therefore regulating how much someone buys – and a person can only be a member of one association.
Cannabis laws around the world
The move by Malta, the EU’s smallest member state, is likely to be the first of a number of nations changing their cannabis laws after the UN last year reclassified cannabis to recognise its therapeutic uses.
The governments of Luxembourg, Germany and Switzerland have all announced plans to establish a legally regulated market.
Cannabis is still technically illegal in the Netherlands, which is famous for its cannabis cafes. However there is a tolerance for the drug when it is sold in the coffee shops.
Italy will hold a referendum on the issue next year, while South Africa, Mexico, Jamaica, Portugal and a number of US states already have similar legislation in place.
Uruguay was the first country in the world to legalise cannabis for personal use in 2013, followed by Canada in 2018.