It effectively ends his season unless the Swans can fight their way into the top eight.
Richards, 26, suffered the injury with 30 seconds on the clock in the final quarter of the Swans' 61-point loss to the Blues when he accidentally collided with Brendan Fevola.
Fevola's knees crashed into Richards' back in a marking contest, and he was sent sprawling to the turf before he began to bleed from the mouth.
"He's broken a rib and punctured his lung, and he's off to hospital now," coach Paul Roos said after the match.
"He's okay. I just saw him in the rooms there, so they'll get him off to hospital and do what they have to do as quick as they possibly can."
Late on Saturday night, Swans doctor Nathan Gibbs said Richards would need to remain in hospital for two to three days with a chest drain and ground transport to get back to Sydney.
"He remained stable when he came off the ground and we didn’t have to do an emergency chest decompression," Dr Gibbs said.
"We monitored him and got him straight to hospital where he had a chest drain inserted into his lung to reinflate the lung. He is now doing well and his lung [was] back to two-thirds its size within 10 minutes of the drain being inserted.”
Richards' family were with him following the game and remain with him at the hospital.