SANTA CLARA –- The Jim Harbaugh era ended Sunday in the same fashion as so many games during his four eventful seasons with the 49ers.
The 49ers snapped a four-game losing streak in the season finale at Levi’s Stadium with a 20-17 victory over the playoff-bound Arizona Cardinals.
Running back Frank Gore, a 10-year veteran who does not have a contract for next season, showed once again he has something left in his old legs with 144 yards on 25 rushing attempts.
[MAIOCCO: Gore reaches 1,000-yard mark for eighth time]
And quarterback Colin Kaepernick threw touchdown passes, including a 76-yarder to Anquan Boldin in the first quarter and the go-ahead score late in the third quarter.
Harbaugh finished his fourth season with the 49ers with a 44-19-1 regular-season record. The 49ers advanced to three NFC Championship games, including one Super Bowl, in his first three seasons. This year, the 49ers stumbled to an 8-8 record and finished third in the NFC West.
It has been a foregone conclusion for most of the season that Harbaugh would not be back with the 49ers due to differences with CEO Jed York, general manager Trent Baalke and team president Paraag Marathe.
Harbaugh has decided to accept the University of Michigan’s offer to coach at his alma mater, Comcast SportsNet Bay Area’s Dave Feldman confirmed late Saturday night. Harbaugh is expected to be announced as coach on Tuesday.
[MAIOCCO: 49ers, Harbaugh 'mutually part ways']
Before the game, York talked at length with FOX sideline reporter Laura Okmin, but when asked if he had time to speak with local reporters, York answered, “Nope.”
Later, York and Harbaugh spoke on the field and had a quick embrace while the 49ers went through warmups about an hour before kickoff.
The 49ers, whose roster has been depleted with 18 players on injured reserve this season, played toe-to-toe with the Cardinals, who are down to their third-string quarterback. Ryan Lindley threw three interceptions, including Craig Dahl’s pick with 90 seconds remaining to seal the victory.
Dahl ran to the sideline and handed the game ball to Harbaugh. Harbaugh then received a Gatorade dump from Nick Moody and Quinton Patton.
Kaepernick hit fullback Bruce Miller on a 3-yard pass late in the third quarter to supply the 49ers with a 20-17 lead.
Kaepernick finished the game with 15 completions in 26 attempts for 204 yards with two touchdowns and no interceptions. Kaepernick also gained 63 yards rushing on seven attempts.
Gore is scheduled for unrestricted free agency for the first time in his NFL career. Last week, 49ers general manager Trent Baalke told CSNBayArea.com that he wants to re-sign Gore. And Gore made it clear he wants to be back with the 49ers.
Gore was the last 49ers’ starter to be announced to the crowd Sunday at Levi’s Stadium. He received a standing ovation.
Gore No. 20 all-time: Gore, the 49ers’ all-time leading rusher, eclipsed the 1,000-yard mark Sunday, becoming just the 11th player in NFL history register eight season 1,000-yard seasons.
In the process, Gore also moved past Warrick Dunn and into No. 20 all-time on the NFL’s all-time rushing list.
Gore came into the season finale against the Arizona Cardinals 38 yards away from the 1,000-yard mark, as well as surpassing Dunn on the all-time list. Gore entered the game with 10,929 yards in his career. Dunn had 10,967 in his 12-year career.
Boldin reaches milestone: Receiver Anquan Boldin caught a 76-yard touchdown pass from Colin Kaepernick on the 49ers’ opening drive to send him over the 1,000-yard mark for the season. Boldin, who entered the game with 81 receptions for 981 yards, has 1,000 yards receiving in a season for the seventh time in his 12-year NFL career.
[MAIOCCO: Boldin tops 1,000-yard mark again]
In Boldin’s first season with the 49ers, he led the team with 85 catches for 1,179 yards and seven touchdowns. Boldin had not attained 1,000 yards receiving in a season since 2009 with the Arizona Cardinals. Boldin ranks 19th overall on the NFL’s all-time receiving yards list.
Lindley breaks through: Cardinals quarterback Ryan Lindley ended the longest streak of pass attempts without a touchdown toss when he threw a 20-yard score to receiver Michael Floyd in the first quarter. Running back Marion Grice took the handoff and pitched it back to Lindley. Cornerback Dontae Johnson came up in run support, leaving Floyd all alone in the end zone for a touchdown that gave Arizona a 7-0 lead. Lindley and Floyd connected again on a 41-yard touchdown. Floyd finished with eight receptions for 153 yards.
Rookie cornerback Dontae Johnson was in the starting lineup on Sunday to replace injured Perrish Cox. Cox, who sustained a sprain to the AC joint in his shoulder last week against the San Diego Chargers was declared among the 49ers’ seven inactive players.
Safety Eric Reid was declared out due a concussion. Craig Dahl replaced him in the starting lineup. Linebacker Ahmad Brooks is also inactive due to a dislocated thumb. Dan Skuta and Aaron Lynch replaced him.
Joe Looney made his third start at three different positions on the offensive line in place of right guard Alex Boone, who was placed on injured reserve due to torn meniscus cartilage in his knee.
This ‘n’ that
--There also a lot of uncertainty whether defensive lineman Justin Smith will return next year for a 15th NFL season. But one of the young players expected to have a more-significant role next season had another good game. Tank Carradine, a second-round draft pick in 2013, recorded his third sack of the season.
--Boldin was called for a controversial holding penalty in a Week 2 loss to the Chicago Bears that nullified a long touchdown run by Gore. On Boldin’s first-quarter touchdown, there was a flag down. But at the officials met, they determined there was not penalty for offensive pass interference. The lead official for both of those games: Referee Carl Cheffers.
--Tight end Vernon Davis caught a 9-yard pass in the third quarter. It brought an end to a streak of 12 consecutive quarters in which Davis was held without a reception.
--Kicker Phil Dawson improved to 6 of 9 on field-goal attempts of 50-yards or more when he squeaked a second-quarter attempt over the crossbar from 53-yards out.
--Harbaugh dropped to 1-for-7 on replace challenges this season when a 24-yard pass from Lindley to Floyd along the sideline was allowed to stand in the second quarter.
--Linebacker Michael Wilhoite capped a solid season as the starter with his second interception of the season. His second-quarter pick came at the 49ers’ 25-yard line.
--Cornerback Chris Culliver, another scheduled free agent, intercepted his fourth pass of the season to tie with Antoine Bethea for second on the team. Cox led the 49ers with five interceptions.