The Sharks' offensive woes continued as they were shut out for the second game in a row, running their scoreless streak to 148 minutes, 30 seconds.
All three Columbus goal-scorers have had difficulty finding the net over the last few weeks. Brule picked up his first goal in 16 games, Modin notched just his fifth in his last 27 games and Fedorov scored after not having a goal in his last 11 games.
The Blue Jackets had lost two in a row and five of the last six.
It was Norrena's third shutout of the season.
The Blue Jackets, 17-2-4 when scoring first this season, led 1-0 through two periods. Modin slid a drop pass between his skates to Brule, who fed him as he came in along the back boards. Modin tried a wraparound, but was stopped by goaltender Evgeni Nabokov. Modin got at least two more whacks at it and the puck eventually glanced off Nabokov's chest and into the net at the 4:56 mark of the second.
It was Modin's 14th goal of the year.
Columbus improved to 17-1-3 with a lead through two periods, while San Jose fell to 2-16-0 when trailing heading into the third.
Brule made it 2-0 at 5:02 of the third with his fifth goal. He had not scored since Jan. 6, the last time the teams met. He also had a goal and an assist in that game, won by San Jose, 5-2.
After taking a pass from Fedorov, he streaked down the left wing and wristed a hard shot that beat Nabokov high over his left shoulder.
On the power play after San Jose's Joe Thornton was called for a delay of game penalty, the Blue Jackets added an insurance goal when Nikolai Zherdev centred a pass to Fedorov in the high slot with 7:55 remaining for his 15th of the year.
San Jose was coming off a 5-0 loss to Nashville on Wednesday night.
The Sharks' best scoring chances came on Jonathan Cheechoo's blast from point-blank range four minutes into the third period, and Scott Hannan's shot midway through the period. Norrena gloved both.
Notes: Columbus D Bryan Berard, who had missed the first 51 games after back surgery, was rocked by a check midway through the third period. He staggered off the ice, but returned. ... The Sharks had won the last four and six of the last seven meetings with the Blue Jackets. ... Columbus RW David Vyborny extended his points streak to four games.