The measure goes to the Senate over the objections of Republicans, who say not all businesses can afford to pay employees for time they don't work.
The bill by Assemblywoman Fiona Ma, a Democrat from San Francisco, passed Wednesday on a 42-25 vote.
Ma says five million Californians now have to work while they are sick or lose pay and risk being fired if they take time off.
Her bill requires larger companies to pay employees for nine sick days each year. Businesses with fewer than 10 employees would have to provide five sick days annually.
Opponents say the measure punishes small businesses.
Ma says her bill will help prevent the spread of illnesses. The legislation also covers employees recovering from domestic violence or a sexual assault.