Boston repeatedly had chances, but couldn't push across a run. Miami's pitchers, despite allowing seven hits and walking four, kept working out of jams.
The Marlins combined to strike out nine before the game was delayed at 3:22 p.m. ET, with two outs and one on in the top of the eighth inning.
Miami starter Nathan Eovaldi needed 36 pitches to get out of a bases-loaded jam in the first inning. The hard-throwing right-hander's fastball was clocked between 96-98 mph, but the Red Sox effectively fouled off pitches and worked deep counts.
Alex Hassan doubled with one out, and Ryan Lavarnway was hit by a pitch. After Travis Shaw walked, Eovaldi struck out Brandon Snyder looking.
Boston's Allen Webster, on the other hand, needed 11 pitches to get out of the first inning. And he worked around a two-out single to left by Giancarlo Stanton.
Webster worked three scoreless frames, and he threw 30 pitches, 19 for strikes.
Eovaldi's second inning was a crisp one, retiring the side in order with two strikeouts. But with his pitch count at 49, Miami's projected No. 2 starter was lifted. Initially, the hope was to go three innings, but that was dependent on pitch count.
Like Eovaldi, Brad Hand also encountered some trouble in his two innings. But the lefty was able to keep the Red Sox off the board.
In three of the first four innings, the Red Sox had a runner on third. Twice they had the bases loaded, but were unable to score.
Up next: The Red Sox will return home to Fort Myers on Friday and will host the Braves at JetBlue Park at 1:05 p.m. ET, live on Gameday Audio. Left-hander Felix Doubront will make his second start of the spring after striking out three and giving up one hit over two scoreless innings against the Orioles on Sunday. Closer Koji Uehara, coming off a dominant spring debut on Monday, also is scheduled for his second appearance. Junichi Tazawa, Edward Mujica, Francisco Cordero and Jose Mijares will join Uehara out of the bullpen.