The broad-based S&P 500 closed up 3.76 points (0.29 per cent) to 1,281.06, while the tech-dominated Nasdaq Composite added 21.50 (0.81 per cent) to 2,669.86.
The Dow Jones Industrial Average of 30 blue chips slipped again in late trade to end barely in the red, down 2.72 points (0.02 per cent) at 12,415.70.
Encouraging the bulls were separate data releases showing the job market continued to improve in December. Payrolls firm ADP reported a huge surge in private-sector hiring, at a net 325,000 jobs, much higher than forecasts.
The government's weekly report on new claims for unemployment compensation -- an indicator of the pace of layoffs -- fell slightly, confirming the steady downtrend of the past two months.
But eurozone worries continued to hold the markets back, with the euro falling on heightened worries about Spain's banks and a rise in French debt yields.
"Against this wishy-washy backdrop, the S&P 500 Index and Nasdaq Composite clawed their way into the black," said Andrea Kramer of Schaeffer's Investment Research.
Bank of America shares jumped 8.6 per cent, helped by unproven speculation that the government was preparing measures to help the housing market -- which would benefit its dead-weight portfolio of bad mortgages.
Retailer Target sank 3.0 per cent after it cut its fourth-quarter earnings outlook, citing disappointing sales during the November-December holiday season.
Monsanto, the farm seeds giant, surged 5.5 per cent after its fiscal first-quarter earnings beat market estimates.
On the Nasdaq, shares of disk drive maker Seagate pushed up 6.4 per cent after it reported revenues for its second quarter that beat analyst forecasts.
The company was less affected than its competitors by the flooding in Thailand, the global disk-drive hub.
Shares of Eastman Kodak lost another 10.6 per cent after Wednesday's 18 per cent drop, as Moody's downgraded its credit rating deep into "junk" territory citing the high chance of an imminent bankruptcy filing.
Bond prices were mixed. The yield on the 10-year Treasury fell to 1.99 per cent from 2.0 per cent on Wednesday, while the 30-year rose to 3.06 per cent from 3.04 per cent.