The home side took the lead in the 34th minute when Alexander Meier went clear as the league's top scorer with his ninth of the season by firing home from close range after Marc Stendera's shot came back off the post.
Frankfurt were back in front in the 52nd minute when Haris Seferovic bundled home a scrappy effort.
Meier became the first player to reach double figures this season with his second to put Frankfurt two ahead in the 68th minute. It was a very similar goal to the first as he tapped home after Stefan Aigner's shot had hit the post.
It was four not long after when Aigner this time made no mistake by collecting Bastian Oczipka's cross and swiping home.
Luca Caldirola stabbed home 11 minutes from time to give Werder hope of a late fightback, but that was extinguished moments later when Stendera fired into the top corner from 20 yards.