It also restricts selling of cigarettes to anyone under the age of 18. Under the bill, an offender will have to pay a cash fine of $64, and his or her tobacco goods will also be confiscated.
If a person repeats the offence, the new law provides for a fine of $1,278.
The bill now awaits approval by the Guardian Council, which had rejected a similar bill last year, saying it was against national economic interests.
Health Minister Kamran Baqeri-Lankarani is an exponent of the non-smoking bill and has several times stated that he wants to finalise the bill under any circumstances.