John E. Sokolowski-USA TODAY Sports

Rookie Malachi Jones scored his first Major League Soccer goal as New York City FC defeated host Toronto FC 3-2 on a rainy Saturday night.

Santiago Rodriguez converted a penalty kick, Andres Perea also scored and Hannes Wolf had two assists for NYCFC (5-5-2, 14 points), which won for the first time on the road this season. Goalkeeper Matt Freese made nine saves.

Federico Bernardeschi and Raoul Petretta tallied for Toronto (6-5-1, 19 points), which had a three-match winning streak snapped.

Rodriguez opened the scoring from the penalty spot in the 23rd minute. It came after Wolf's cross from the right wing went off the chest and then the left arm of Toronto's Matty Longstaff, just outside the top of the 6-yard box.

Referee Lucasz Szpala made no call originally, but a video review determined an infraction had occurred. Rodriguez put his kick into the lower-right corner of the net as Toronto goalkeeper Sean Johnson, a former NYC standout, went the wrong way.

Jones, making his first start in league play, doubled the advantage in the 44th minute. Wolf outmuscled Toronto's Deiby Flores for the ball and drove the ball down the right wing before spotting an unmarked Jones at the top of the 18-yard box in the center of the pitch. Jones' low one-timer banked into the net off the right post.

Toronto got a goal back in the 55th minute following a NYCFC turnover in its own end. Some nifty passing got the ball to Longstaff for a turnaround shot from the top of the 6-yard box. Freese made a diving save, but Bernardeschi pounced on the rebound and put it into the roof of the net from just outside the right post.

Toronto nearly tied it in the 77th minute, but Freese made a diving save to rob Lorenzo Insignia from about 10 yards out.

NYCFC immediately drove the ball down the field, and Wolf's cross from the left wing left Perea with a tap-in from the near post.

Toronto pulled within 3-2 in the 89th minute. Longstaff's cross from the right wing found Petretta on the opposite side of the penalty area for a 15-yard volley that caromed into the net off the right post. It was his first MLS goal.

Bernardeschi received a second yellow card after the final whistle for apparently arguing about the amount of stoppage time and will miss Toronto's next match.

More must-reads:

TODAY'S BEST
Watch: Oilers chase goaltender Sergei Bobrovsky from Game 4
Dodgers ace leaves game against Royals due to triceps tightness
Pirates place young catcher on concussion IL
Watch: Game 4 of Stanley Cup Final gets off to chaotic start
Rockies 1B, former NL MVP diagnosed with internal oblique strain
NBA insider shares update on J.J. Redick's candidacy for Lakers HC job
Sam Mayer uses overtime restart to win Xfinity Series' return to Iowa
Nationals hurler DJ Herz makes impressive history in third career start
Free-agent DB Stephon Gilmore addresses playing futureĀ 
Report: Oilers open extension negotiations with veteran winger
Tiger Woods makes big admission about his U.S. Open future
Cubs P 'Mike' Imanaga continues hot start vs. Cardinals
Ravens All-Pro safety undergoes minor surgery
Kyle Larson takes pole for inaugural Cup Series race at Iowa
Maple Leafs make major change to coaching staff
Nationals sign OF/DH to minor league contract a day after release
Cubs place lefty starter on 15-day IL
Celtics' All-Defensive guard reportedly could replace Kawhi Leonard on Team USA
Tee Higgins' contract decision adds pressure on Bengals in 2024
Phillies get veteran OF back from IL