A strong direct product theorem says that if we want to compute $k$ independent instances of a function, using less than $k$ times the resources needed for one instance, then our overall success probability will be exponentially small in $k$. We establish such theorems for the classical as well as quantum query complexity of the OR-function. This implies slightly weaker direct product results for all total functions. We prove a similar result for quantum communication protocols computing $k$ instances of the disjointness function. Our direct product theorems imply a time-space tradeoff $T^2S=\Om{N^3}$ for sorting $N$ items on a quantum computer, which is optimal up to polylog factors. They also give several tight time-space and communication-space tradeoffs for the problems of Boolean matrix-vector multiplication and matrix multiplication.