Rossi had only qualified sixth, and although he jumped to fourth on the first lap, he found himself back in eighth soon afterwards when he slid off the road trying to pass Andrea Dovizioso's Ducati.
He was able to battle back to claim second from Honda's star rookie Marc Marquez with two laps to go, completing a Yamaha one-two behind the dominant Jorge Lorenzo.
"I'm so happy because it was my target to try to finish on the podium at the first race," said Rossi.
"This morning after the warm-up I knew that I had good pace so I thought if I do a good start I have to risk a bit to overtake the bikes in front that are a bit more slow than me.
"Maybe overtaking Dovizioso I arrived too fast and from that moment my race became very, very difficult."
It took until lap eight for Rossi to overtake Stefan Bradl's fifth-placed LCR Honda, by which time the podium battle was four seconds up the road.
"For me it was very difficult to overtake Bradl, so I lost a lot of time and I started to see my podium go away," Rossi admitted.
"When I had a free track, I had great pace and step by step I arrived closer and closer and closer.
"At the end it was a great battle with all three but especially Marc, because he was maybe a bit faster. We were very close."
He said the fact his resurgence came as part of a Yamaha one-two made it even more satisfying.
"I'm so happy for Yamaha and Jorge. First and second for Yamaha at the first race is fantastic," Rossi said.
"They gave me another chance to be in this team and I think we will enjoy this season."