Hammel (4-2) allowed a run on five hits and issued no walks in 6 2/3 innings.
He was bidding to throw at least seven innings in five consecutive starts for the first time in his career, but when a bloop single by Donovan Solano put men on the corners, Cubs manager Joe Maddon went to the bullpen.
Miami's Jose Urena (0-2) lasted six innings in his second major league start. He allowed three runs on four hits, walked three and struck out four.
Urena's outing got off to a shaky start as each of Chicago's first three batters reached base.
Fowler singled and came home on a double by Rizzo. Bryant, who walked ahead of Rizzo, scored the Cubs' second first-inning run when Jorge Soler grounded out.
Rizzo was then tagged out on a close play at the plate after Urena fielded a tapper back to the mound.
Urena escaped a second-and-third jam in the second, but the Cubs increased their lead two innings later. Addison Russell drove in former Marlin Chris Coghlan with a two-out single to make it 3-0.
Miami got on the board in the bottom of the fourth. After hitting a one-out single and advancing to second on a wild pitch, Giancarlo Stanton stole third and scored on a throwing error by Cubs catcher Miguel Montero.
The Marlins had runners on the corners with two outs later in the inning, but Hammel struck out J.T. Realmuto.
A two-out walk to Fowler proved costly for Miami reliever Vin Mazzaro in the seventh as Bryant followed with a double to score Fowler.
Starlin Castro hit a solo home run for Chicago in the eighth.
The Marlins returned home following a 2-4 road trip ... Miami left fielder Christian Yelich extended his hitting streak to nine games ... Fowler entered the game 0-for-15 lifetime at Marlins Park ... Castro's home run was the 899th hit of his career ... The Marlins dropped to 0-8 on Mondays this season.