Gonzalo Castro scored either side of half-time to put the visitors in control and, even though Nils Petersen quickly pulled one back, Simon Rolfes restored Leverkusen's two-goal cushion in the 74th minute.
Jens Hegeler ended any lingering Bremen hopes with a fourth in the 79th minute as Leverkusen claimed their fifth win in six games to emerge as runaway leaders Bayer Munich's closest challengers.
Leverkusen started brightly and had a chance in the eighth minute, but Andre Schurrle's attempt went just wide of the left post.
At the other end and Bremen's Niclas Fullkrug's attempt from eight yards was blocked by Leverkusen defender Omer Toprak.
The visitors went ahead in the 31st minute. Stefan Kiessling passed to Daniel Carvajal, whose shot was stopped by Bremen goalkeeper Sebastian Mielitz, but the loose ball went to Castro, who blasted home low into the corner of the empty net.
Bremen nearly equalised six minutes later, but Aaron Hunt's shot went just wide.
Leverkusen doubled their lead in the 52nd minute as Lars Bender fed a perfect ball through to Castro, who raced past four defenders and struck his left-footed shot past Mielitz.
Bremen pulled a goal back two minutes later with Hunt crossing from the right and Petersen heading past Leverkusen keeper Bernd Leno and into the corner.
Rolfes made it 3-1 after 74 minutes. Kiessling's attempt was blocked by Mielitz, but the striker headed the ball into the path of the Leverkusen captain, who hit it home.
And Hegeler put the match to bed five minutes later, running on to a Schurrle through-ball and beating Mielitz inside the right post.