At this stage of a lost season, D.C. United marks progress with small acts. Victories and goals remain elusive, but Sunday night at DSG Park, undermanned United reversed course by not digging itself into an early trench.

It held firm through much of 90 minutes, withstood a late scare and received a sensational performance by back-up goalkeeper Joe Willis for a 0-0 draw with the Colorado Rapids before 14,739 spectators.

United (2-13-4) was blanked for the sixth time in eight matches (12th time overall) and remained winless on the road with one goal scored. But Willis’s gems stymied the Rapids (7-7-6) and provided a refreshing jolt at the conclusion of five games in 16 days.

“If I had to give Joe a match rating, it would be 10 out of 10,” center back Ethan White said. “He bailed us out a bunch of times.”

The former University of Denver standout replaced Bill Hamid, who is with the U.S. national team for the CONCACAF Gold Cup and will not return until probably late July. Although Hamid has served as United’s starter for most of three seasons, Willis is no novice.

“He has had plenty of nights like this. This isn’t a one-off for Joe,” Coach Ben Olsen said of Willis, who made his 17th career regular season start and has manned the net for the first three U.S. Open Cup matches this year. “We have a lot of faith in him. It’s only because he has earned that faith. It’s not like we’re just giving it to him. He has had a few games where he has been the guy in charge.”

Willis, 24, thwarted rookie Deshorn Brown three times and made four other stops in front of more than 20 guests from his college days. He preserved the tie in the 75th minute with a reflex stop on Brown deep in the penalty area.

“I messed it up in the beginning,” Willis said. “I started to come, and my communication with Ethan was just bad. [Brown] was able to get in behind him. Once he did that, I tried to come out and make myself as big as possible and was fortunate to get a hand to it.”

“Phenomenal,” right back James Riley said of his goalie. “Bill is top notch and a fantastic young goalkeeper, but we are fortunate to also have a good young back-up.”

United’s lineup featured just four players who started the opener four months ago: defender Daniel Woolard, midfielders Perry Kitchen and John Thorrington and forward Chris Pontius.

Aside from Hamid, United was missing defender Dejan Jakovic (adductor injury), midfielder Nick DeLeon (ankle sprain) and forward Dwayne De Rosario (hip flexor strain).

Probable starters Chris Korb and Alain Rochat were in uniform but on the bench. Korb was nursing a minor hamstring ailment and did not play. Rochat had missed three practices in order to spend time with his wife, who gave birth to their fourth child. He entered at halftime.

Rookie defender Taylor Kemp, a Colorado native, made his second start and veteran forward Carlos Ruiz received his fourth assignment.

Willis’s work began in the 12th minute with a reflex save on Brown’s knee-propelled shot from close range. Moments later, Brown snapped a loose ball wide after Willis interrupted a long ball into the box.

United reached the 30-minute mark without conceding a goal – no small feat for a club that has allowed 14 (of 29 overall) in that span.

The good fortune almost ended in the 34th, however, when German Mera headed rookie Dillon Powers’s free kick off the near post.

With a new partnership up front (Ruiz and Pontius) and no creativity in midfield, United was harmless until the 40th minute. White’s angled volley off Kemp’s cross floated over drawn-out goalkeeper Clint Irwin and was cleared off the goal line by retreating defender Drew Moor.

Rochat entered for winger Kyle Porter after intermission and partnered with Kitchen in central midfield. The move nudged Pontius deeper in the attack.

The teams exchanged quality opportunities — and quality saves. Willis extended to his left to turn away Brown’s low drive and Irwin stuffed Ruiz’s unimaginative strike on the end of a promising counterattack.

United began to bend. Woolard’s last-gasp stab thwarted a threat deep in the box and Atiba Harris’s header missed by a whisker.

After stopping Brown in the 75th, Willis blocked Nick LaBrocca’s rasping drive and watched Jaime Castrillon’s shot streak wide.

“We hung in,” Olsen said. “Beggars can’t be choosers right now and we’ll take the point. . . . Everybody did their part. Offensively, again, it wasn’t a great night, but that is who we are. If we are going to get results, we have got to put up zeros” defensively.

United earned at least a point at Colorado for only the fourth time in the past 13 meetings (1-9-3).

United notes: Pontius was added to the U.S. national team’s alternate list for the Gold Cup, meaning he is among 12 players eligible for four call-ups after the tournament’s group stage. Porter was a late addition to Canada’s final roster but will also remain with United for the time being. . . .

Off from league play until July 20, United will host Mexican club Chivas Guadalajara in a friendly Friday at RFK Stadium.

CREW 1, TIMBERS 0: Bernardo Anor’s early goal helped host Columbus defeat Portland to end the Timbers’ 15-game unbeaten streak.

Portland had gone 7-0-8 since March 9, while the Crew ended a three-game losing streak.

●SPORTING KC 2, FIRE 1: Benny Feilhaber and Graham Zusi scored in the first eight minutes, and Sporting Kansas City snapped visiting Chicago’s three-match winning streak.

The victory was only Kansas City’s second in the last seven matches, giving the franchise 30 points.

Kansas City’s two goals were scored 2 minutes 14 seconds apart.

●IMPACT 1, CHIVAS USA 1: Patrice Bernier scored from the penalty spot in the 80th minute, and Montreal tied visiting Chivas USA.

Bernier’s goal came after Mario De Luna took down Sanna Nyassi on the left edge of the penalty area.

Eric Avila scored for Chivas, the last-place team in the Western Conference.

— Associated Press