No goals were scored, and from the Portland Timbers' perspective that was disappointing.
But by keeping MLS Western Conference-leading Sporting Kansas City off the scoreboard, the Timbers again played like a prepared, committed unit that is up for challenges.
Saturday's scoreless draw at Providence Park included chances for both sides, but it ended as a stalemate between two confident clubs.
"There's a little bit of disappointment from the players, from the coaching staff, not to be able to get the three points. And that's something very positive, because we played against a very good team, a team that is top in the league," Timbers coach Giovanni Savarese said.
Portland's best chance came in the 56th minute, when Sporting goalkeeper Tim Melia lunged to his left to deny Fanendo Adi. The Timbers' striker outjumped a defender and headed the ball into the turf, only to see Melia's paw get to the ball before it could slip inside the goalpost.
Portland (6-3-4, 22 points) is sixth in the conference and remains seven points back of Sporting KC (8-2-5, 29).
The Timbers' next MLS match isn't until June 24, when they visit Eastern Conference leader Atlanta United.
Portland, however, is back at Providence Park at 8 p.m. Friday for a U.S. Open Cup match against the Los Angeles Galaxy.
Saturday was only the second time in 13 league matches this season the Timbers have failed to score.
Savarese said SKC deserved credit for that.
"They defended well. They saved a couple of balls that I felt were going in," he said. "But also they created chances. It was a pretty even game and I think a very tactical match.
"It was a fair result, even though we definitely felt we would love to have the three points because we put the effort in."
Portland was without midfielder Diego Chara, suspended for one game because of yellow card accumulation. The Timbers have not won without Chara on the field since July 5, 2015 and are 5-16-13 in league games without their midfield disruptor since Chara joined the club early in the 2011 season.
Lawrence Olum, who played much of his career for Sporting Kansas City, started in Chara's holding midfield position and — except for one bad touch late in the match — was solid.
"We kept them moving a lot, and it kind of slowed their rhythm," Olum said. "We were happy with that part."
Both goalkeepers finished with four saves. Portland's Jeff Attinella dove to block second-half shots from Roger Espinoza and Graham Zusi.
The first half was scoreless but not without opportunities.
The Timbers' three best first-half chances came from entry passes into the 18-yard box that Sporting KC managed to get to first. Among those was a play late in the half when Melia just beat Cristhian Paredes to a through ball.
Diego Valeri and Marco Farfan also were narrowly beaten to balls by SKC defenders, denying the Timbers prime scoring opportunities.
SKC's best chance was an attempt off the crossbar from Daniel Salloi in the 41st minute.
"Definitely got lucky on that one," Attinella said after posting Portland's fourth shutout this season. "He got that shot off real quick. He's a dangerous player. Fortunately, he didn't hit it low enough."
There was a scary moment in the 36th minute, when Sporting rookie Jaylin Lindsey beat Valeri to an entry pass into the penalty area. Valeri got a foot caught under the defender and appeared to roll his ankle. But Valeri was fine and played until Dairon Asprilla replaced him in the 83rd minute in a move made to add speed up top.
Sporting KC played the second half without veteran center back Matt Besler, who suffered an injury late in the first half.