With the start of the Stanley Cup playoffs less than two weeks away, the New York Rangers aren't playing like a team that wants to be there.

The lowly Buffalo Sabres looked more like a playoff team Saturday night in putting the Rangers' hopes of clinching a playoff berth on hold yet again with a 4-3 victory that was keyed by Ryan O'Reilly's two first-period goals.

Zemgus Girgensons and Matt Moulson also scored on a night the Sabres sent Henrik Lundqvist to the bench in less than 21 minutes and had the sellout crowd at Madison Square Garden booing several times.

"We know down the stretch teams are trying to finish on a high note," Rangers captain Ryan McDonagh said after the team failed to clinch a playoff spot for the second straight game. "It doesn't matter where you are. We're trying to fine-tune our game and certainly can't put ourselves in a big hole like that."

Chad Johnson had 33 saves and Buffalo killed off a late two-man disadvantage in improving to 6-2-2 in its last 10 games. The win also snapped a nine-game losing streak against the Rangers dating to April 2013.

"We're doing everything," Johnson said. "We're trying to be spoiler, we're just trying to play our game. We had a tough start and we are just jelling as a group now. You're starting to see it all come together, the chemistry, the compete we have. It doesn't matter where you are in the standings. You want to win."

Kevin Hayes, J.T. Miller and Derek Stepan scored for the error-prone Rangers, who can clinch a sixth straight playoff berth by winning one of their four remaining games.

On Thursday, New York squandered a third-period lead in losing to the Carolina Hurricanes. The Jack Eichel-led Sabres thoroughly outplayed them early in jumping to a 3-0 lead and then held on.

O'Reilly staked Buffalo to a 2-0 lead in the opening 12:59, scoring his 19th and 20th goals of the season, thanks in part to some bad plays by usually reliable defenseman Kevin Klein.

O'Reilly put Zach Bogosian's rebound past Lundqvist at 10:07 after Klein failed to clear the rebound. He got his second less than three minutes later when Klein had a puck get past him at the blue line, allowing Eichel to lead a 2-on-1. The rookie's cross-crease pass found O'Reilly alone for a shot into an open net.

"We made our chances and we buried them early," O'Reilly said. "He is one of the best goalies in the league. For us to do that, it gives confidence to our offense."

The crowd booed when the Rangers left the ice and they were even more annoyed when Girgensons scored on his own rebound while falling to the ice at 46 seconds of the second period.

"Again, as a goalie but also as a team, we need short memories," said Lundqvist, who gave up three goals on nine shots before being replaced by Antti Raanta.

It seemed to wake up the Rangers as Eric Staal set up Hayes' 13th goal a little more than two minutes later, and Johnson had to come across the crease to stop Rick Nash's chance later in the period.

Moulson pushed the lead to 4-1 at 13:09 of the second period after Keith Yandle's turnover in front of his net led to a point blank shot.

The Rangers made a push, getting a goal from Miller late in the second period on a weird carom off the ends boards. Stepan scored in close 4:52 into the third period to cut the margin to a goal.

The Rangers got a great chance to tie it when Mark Pysyk and Casey Nelson of the Sabres were called for penalties at 12:12, giving the Rangers a full 2-minute 5-on-3 power play. However, they failed to get a quality chance.

New York pulled Raanta, but Johnson stopped Chris Kreider twice late in the final 1:15.

"We just did a good job of killing and guys battled to the end," said Johnson, who is 5-2-1 in his last eight starts. "It was a good win."

NOTES: Zuccarello played in his 300th NHL game. ... Sabres 20-goal scorer Evander Kane missed his third straight game with an upper-body injury. ... The game was Johnson's 100th in the NHL and his eighth straight start for the Sabres. ... The loss ended the Rangers' streak of having won 13 straight games this season after losing a game in regulation. ... Raanta stopped 14 of 15 shots. ... O'Reilly is the fourth Sabres player to score 20 goals this season, joining Eichel, Kane and Sam Reinhart.