The deal runs through the end of the 2019-'20 season and has an average annual value of $4.65 million, the team said in a release.
MacArthur, a 29-year-old native of Lloydminster, Alta., scored a career-high 24 goals and had 31 assists in 79 games last season. He also set career highs with a plus-12 rating and 78 penalty minutes.
"Obviously our happiness with his performance last year was a big reason to give him the term that we did," general manager Bryan Murray said Tuesday on a conference call.
In 482 career regular-season NHL games with Buffalo, Atlanta, Toronto and Ottawa, MacArthur has 268 points (117-151) and 307 penalty minutes.
Murray described MacArthur as a "character guy," who was a good fit with forward Kyle Turris last season.
"Obviously we're quite happy with what he did," Murray said. "He's in that 20-to-25 goal range on a somewhat consistent basis and he's a real complement to the young players who will end up playing at some point with him. Kyle Turris and him seemed to fit like a glove.
"Whoever plays on the right side I think will really benefit from playing with Clarke and Kyle. To me, it really solidifies a good pair that ... will make our team be a consistent contender."
MacArthur was Buffalo's third-round pick (74th overall) in the 2003 NHL Entry Draft.