The answer from @Dave gets to the main points: use ridge regression and/or LASSO to develop your model, and use cross validation to select the level of penalization (often called $\lambda$ in LASSO or ridge regression ). Chapter 6 of An Introduction to Statistical Learning has worked examples of ridge and LASSO, showing how to use the built-in cross-validation tools of the glmnet
package in R to select penalization levels that optimize the prediction of your outcome variable. Here are some more details than could fit in a comment on his answer .
In general, you don't want to throw away useful information if you will be using your model to predict new cases for which you have the predictors but not the outcome values. Your concern that LASSO might select one from a set of collinear predictors and thus omit other important correlated predictors is valid, although in practice what happens is that the selected predictor serves as a proxy for the predictors that were omitted. If that bothers you then ridge regression has the advantage of not throwing away information from any predictors, instead weighting them according to their relations to the outcome variable.
A few thoughts on implementation. First, as many of your predictors might simply be noise, you could consider omitting predictors that do not vary substantially among cases or that are at such low levels that they might not be reliable for your prediction work. That's often done in analysis of microarray or RNA seq data. It's best to do that initial variable removal without looking at the relations to the outcome.
Second, you have to be careful that the remaining predictors are pre-scaled similarly. The penalization is applied to the magnitudes (LASSO) or squares (ridge) of the regression coefficients, so to choose the weightings among them fairly they all have to be on similar scales. Continuous predictors are typically adjusted to zero mean and unit variance before the analysis. Some programs do this automatically and then re-convert the coefficients to the original scales. Other software might require you to do that work. Be sure you know how your software deals with that issue.
Finally, as you want to use ridge and LASSO in the context of a linear regression, you also need to verify the usual requirements of linear regression. For example, are your predictors related linearly to the outcome variable in their original scales, or is some transformation necessary to obtain linearity? For example, mRNA expression data often will work better in this respect if they are first log-transformed. You also might need to consider some transformation of the outcome variable.