Still, they needed a little extra from closer Jake McGee against slugger Pete Alonso to turn it all into a victory.
McGee induced a game-ending popup from Alonso with the bases loaded and the Giants escaped with a 3-2 win over the New York Mets on Wednesday night despite two errors and just four hits. San Francisco is 4-1 against the Mets over the past 10 days.
"Tonight, it wasn't good enough. I think everybody knows that," San Francisco manager Gabe Kapler said. "That said, it's a win on the road against a really hungry team."
Crawford hit a go-ahead, two-run double in the seventh inning after New York manager Luis Rojas gave starter Taijuan Walker an aggressive hook, but San Francisco nearly gave the runs back in the ninth.
First baseman Brandon Belt dropped a popup in foul territory and Giants outfielders Austin Slater and Alex Dickerson bumped into each other and dropped a one-out fly ball, allowing New York to put two on against McGee. Francisco Lindor popped up for the second out before Brandon Nimmo drew a full-count walk to load the bases for Alonso.
McGee jammed Alonso with a 1-2 fastball on his 24th pitch, and the soft flare was caught easily on the infield by second baseman Tommy La Stella. It was McGee's 29th save and his first of more than 20 pitches since May 7.
"Needed that from him," Kapler said. "Great performance."
Walker (7-9) overpowered San Francisco through six innings but was pulled in the seventh with 74 pitches after runners reached on an error by third baseman Jonathan Villar and a popup that fell between three Mets defenders in shallow center.
Rojas tabbed left-hander Aaron Loup to face the lefty-hitting Crawford, and the veteran drilled the first pitch to the wall in right for a 3-2 lead.
Fans booed Rojas as he made the change and chanted "Fire Rojas!" after it backfired. It was the first extra-base hit Loup had allowed to a left-handed hitter in 70 plate appearances this season.
"We went with the matchup," Rojas said, adding "it didn't work."
The Giants have won 21 of 28 as they try to hold off the Dodgers for the best record in the NL West and the majors. San Francisco led Los Angeles by 2 1/2 games entering Wednesday.
New York lost for the 10th time in 12 games - all against the Dodgers and Giants. After leading the NL East for nearly three months, the Mets are seven games behind the division-leading Braves.
"We've been struggling and not playing well and then when you come home and you basically get booed off the field, it definitely doesn't make it any easier," Loup said.
The five double plays were a season high for New York. Javier Báez ran into the first one when he took off from second on Villar's liner to center. The ball was caught, and Báez was doubled up easily. Alonso grounded into two double plays, Báez lined into another and Patrick Mazeika also bounced into one.
Walker was perfect until Kris Bryant's solo homer with two outs in the fourth. The right-hander was charged with three runs (two earned), two hits and a walk over six innings while striking out three.
"We can call it aggressive because of the way Walker was pitching, right?" Rojas said of his decision to pull him. "He didn't deserve to be out of the game, but the back-to-back plays just led to that decision."
Walker muttered to himself after giving Rojas the ball and acknowledged he wanted to stay in the game.
"It's not my call to make," Walker said. "I show emotions, and it is what it is."
Walker entered the day with a 7.49 ERA in seven starts since making his first All-Star team in July.
The Mets got an unearned run against Johnny Cueto when third baseman Bryant threw away a two-out, bases-loaded grounder hit by slow-footed Alonso to tie it at 1 in the fifth. An inning later, Dominic Smith ripped a go-ahead RBI double off left-hander Tony Watson (5-3).
Cueto was activated from the injured list and pitched for the first time since Aug. 9 due to a right flexor strain. He allowed an unearned run over 4 2/3 innings, giving up five hits and three walks with two strikeouts.
Alonso singled in the first inning for the first 10-game hitting streak of his career.
Walker lined singles in his first two at-bats, his first hits since switching from hitting righty to lefty a few weeks ago. Walker, a promising right-handed hitter in high school, made the change after experiencing pain in his left shoulder while swinging from the right side.
Giants: C Buster Posey was out of the lineup a night after leaving the game with left knee discomfort, but Kapler didn't expect Posey to miss much time. ... Crawford was in the starting lineup after leaving Tuesday's game with lower back tightness. ... 1B Brandon Belt will leave the team to attend his grandmother's funeral Friday in Texas.
Mets: Lindor was out of the lineup a night after ending a five-week absence with a right oblique strain. He struck out as a pinch hitter in the seventh.
Giants LHP Alex Wood (10-4, 4.11 ERA) pitches the series finale Thursday night against Mets RHP Carlos Carrasco (0-2, 8.82).
Follow Jake Seiner: https://twitter.com/Jake--Seiner
Giants retire Alonso with bases loaded to escape with win
Jake McGee gets out of a bases-loaded jam in the bottom of the ninth to secure a 3-2 win for the Giants vs. the Mets.