My passport has expired, but the U.S. visa in it is still valid. Do I need to apply for a new visa?

No. If your visa is still valid you can travel to the United States with your two passports (old and new), as long as the visa is valid, not damaged, and is the appropriate type of visa required for your principal purpose of travel. (Example: tourist visa, when your principal purpose of travel is tourism). Also, the name and other personal data should be the same in both passports, (unless the name change was due to marriage). Your nationality, as indicated in the new passport, must be the same as that shown in the passport bearing the visa.

If your name changed due to marriage, you can travel to the United States with both passports as well as your marriage certificate.