The proliferation of cloud computing has forced data centers to support a large number of dynamic resources such as virtual machines and storage volumes from any physical location within the data center. This has led to highly volatile and unpredictable traffic patterns. The emergence of cloud applications that exchange large volumes of information have created large persistent flows that need to coexist with other types of traffic. As a result, a number of data center topologies have been proposed to support cloud applications. One of the topologies that has gained prominence is the Clos network. On one hand, Clos networks provide many nice properties, such as equidistant hops, bandwidth, and latency. On the other hand the routing of diverse traffic flows still remains an issue. Current routing methods such as equal-cost multi-path (ECMP) routing that rely on flow hashing over equal cost paths do not take into consideration traffic volume nor network state. In this paper, we investigate routing in Clos topologies. We formulate optimal flow routing in Clos networks as a binary multicommodity flow problem and present optimized flow re-routing, a modified version of the binary multicommodity flow problem that uses a heuristics approach to minimize hash collisions. We also propose FlowFit, a practical optimization method that uses network state to optimally re-assign flows to links. Our experimental and simulation results show a significant improvement in bisection bandwidth and flow completion time over ECMP.