The Richmond Times-Dispatch reports the bill, signed Thursday, received bipartisan support as well as backing from Altria, the nation's largest tobacco company.
The law's restrictions apply to cigarettes and liquid nicotine used in vaping devices and exempts active-duty military personnel. It curtails sales of tobacco and nicotine products from vending machines considered accessible to people under 21.
Chesterfield Republican Sen. Amanda Chase voted against the bill, saying it strips decision-making power from people who are legally adults.
The Campaign for Tobacco-Free Kids says six other states and more than 400 localities have raised the minimum age to buy tobacco to 21.
Information from: Richmond Times-Dispatch, http://www.richmond.com