The measure, which passed the House one day earlier, went to the governor on a 31-20 vote, with one lawmaker voting present.
Sen. Jeff Schoenberg, D-Evanston, said the escalating costs of retiree insurance could hit $1 billion in the budget year that starts July 1 if nothing is done to rein in costs.
Schoenberg, considered a budget expert, said the costs are approaching $880 million this year alone. Thousands of retirees now get coverage for little or nothing.
Senate Minority Leader Christine Radogno, R-Lemont, urged colleagues to vote for the measure, saying "this is where the rubber meets the road."
Gov. Pat Quinn's administration sent lawmakers a letter saying a sliding scale would be worked out based, in part, on size of pension and seniority.