Pappa scored in the second minute, beating goalkeeper Andy Gruenebaum cleanly on a right-footed volley from 25 yards out.
Oduro doubled the advantage in the 25th when Sebastian Grazzini found him with a through-ball and the Ghanaian forward put it home for 2-0 lead.
But only 4 minutes later Chicago (7-5-3) went a man down when Gonzalo Segares' hard tackle on Crew midfielder Kevan George earned him a straight red card.
Tony Tchani put Columbus (5-5-4) on the board in the 35th minute, but the Crew couldn't dent Fire goalie Sean Johnson thereafter.
Columbus lost for the first time seven games and missed a chance to catch Chicago for fourth place in the Eastern Conference.