O'Neill gave the Hurricanes a 2-1 lead just under five minutes into the second period when he beat goaltender Milan Hnilicka on a breakaway. He sealed the win by redirecting a pass by Ron Francis with 4:38 remaining.
Rod Brind'Amour added an empty-net goal in the final minute as Carolina remained unbeaten against Atlanta, improving to 10
Sami Kapanen scored the go-ahead goal with 4:16 left in the second period when he tipped defenseman Sandis Ozolinsh's shot from the top of the left faceoff circle.
Coming off a 6-2 loss to Ottawa, Arturs Irbe rebounded with with a 23-save performance.
Carolina got on the board a minute into the game on the power play. Defenseman Glen Wesley fired a slap shot from the high slot past goaltender Milan Hnilicka, who was screened by Hurricanes winger Sami Kapanen.
The Thrashers responded at 11:43 when defenseman Frantisek Kaberle scored on a wraparound, backhanding the puck through Irbe's legs.
After O'Neill's first goal, the Thrashers came back to tie it midway through the second period. Defenseman Yannick Tremblay fired a slapper from the high slot that went wide of the net. The puck caromed off the end boards and onto the stick of Ray Ferraro, who put it past Irbe.
Ferraro was making his season debut after missing two games with a knee injury.